HashMap快速了解

来源:互联网 发布:农村淘宝加盟有钱挣吗 编辑:程序博客网 时间:2024/06/06 16:28

【HashMap简介】

       ①HashMap是java中最常用的集合类框架之一,是java语言中非常典型的数据结构,是一个散列表,它存储的内容是键值对(key-value)映射。

       ②HashMap继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。

       ③HashMap的实现不是同步的,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致性,这意味着它不是线程安全的,如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。

       ④HashMap是最常用的集合类框架之一,它实现了Map接口,所以存储的元素也是键值对映射的结构,它的key、value都可以为null,即允许使用null值和null键,此外HashMap中的映射不是有序的。 

【HashMap的存储实现】

        当程序试图将多个key-value放入HashMap中时,代码如下:

<span style="font-size:24px;">Map<Serializable, Serializable> map = new HashMap<>();map.put("isDelete", 0);map.put("comment", comment);</span>

        HashMap的存储运用了Hash算法,有兴趣可以查看具体的Java代码。

【HashMap相关比较】

①HashMap

       一般情况下,我们用的最多的是HashMap,在Map中插入、删除和定位元素,HashMap是最好的选择。但,它还可以按读取顺序来排列。

②HashTable

       HashTable是Dictionary的子类,并且在HashTable中方法是同步的,即在多线程应用程序中,不用专门的操作也可以安全的使用Hashtable。

③HashSet

       HashSet实现了Set接口,相比较HashMap存储键值对,HashSet仅仅存储对象,我们一般使用add()方法将元素放入set中,它不允许集合中有重复的值,并且HashSet较HashMap来说比较慢。

④LinkedHashMap

      如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的。

⑤TreeMap:

       如果要按照自然顺序或者自定义顺序遍历键,那么TreeMap会更好。

在遍历的时候,TreeMap能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器。当用Iterator遍历TreeMap时,得到的记录是排过序的。



1 0
原创粉丝点击