For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
Java编程开发语言随着互联网的不断发展而被越来越多的程序员掌握,今天我们就通过案例分析来简单了解一下,Java编程HashMap类的概念与应用分享。
HashMap是java中应用广的集合类之一,以key/value(键值对)的方式保存数据。
你可以把HashMap叫做集合类,也可以把它叫做容器,java中许多容器框架比如Spring,其实好多都是用HashMap来存储数据的。
当然,java秉承“一切都是对象”,HashMap中存储的当然也是对象,只不过是以“键值”对组成的对象。
HashMap继承自AbstractMap,并实现了Map接口。所以,想要彻底搞懂HashMap,还是需要先从Map接口、以及AbstractMap入手。
Map接口
其实Map接口没啥东西,接口而已。定义了size()、isEmpty()、get()、put()、containsKey()、containsValue()......等通用的Map类方法。
相对重要一点的是,Map接口定义了一个Entry
Map接口也实现了几个方法,具体暂时就不详细分析了,这其实是一个很好的针对“接口是否可以实现方法?”这个问题的很好的答案。
AbstractMap抽象类
AbstractMap抽象类实现了Map接口,具体化了部分Map接口定义的方法。
实现了一个叫SimpleEntry的Entry(就是Map接口中定义的内部接口),还有一个叫SimpleImmutableEntry的Entry。
暂且不表,不影响主题:识别HashMap真面目。
HashMap的数据结构
回过头来再继续研究HashMap,先识别HashMap的数据结构,我们先从简单的入手,一步一步抽丝剥茧、先易后难,逐步研究。
从HashMap获取数据
通过get(key)方法获取数据的逻辑如下(假设要获取的数据key=key1):
table数组不为空并且数组长度大于0,则采用与put数据相同的算法得到key1值对应的桶。
桶内不空则从一个节点开始检查,如果节点key值等于key1,则返回该节点的value。如果一个节点不满足条件,则依次检查桶内所有其他节点。
桶内空,或者桶内不空但是没有找到满足条件的对象(应该不可能)则返回null,表明当前HashMap中不存在key值为key1的对象
需要注意的一点是,检查节点key值等于key1的逻辑是:
两个对象相等,或者两个对象不为null且key1.equals(key)。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。