【Java基础】详解Java中Map集合类 HashMap、Hashtable、LinkedHashMap、TreeMap(不涉及底层实现)

学习Java中Map集合类时,强烈建议和Java中set一起

一、Map的基本介绍及其实现类

Java.util.Map,实现了四个类,分别是HashMap、Hashtable、LinkedHashMap、TreeMap。
Map主要用于存储键值对,根据键得到值,因此键不允许重复,但值可以重复

一、HashMap的特点介绍

1、HashMap是最常用的map,它根据键的hashcode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时, 获取数据的顺序是完全随机的。
2、HashMap最多只允许一条记录的键为null,允许多条记录的值为null。
3、HashMap不支持线程同步,即某一时刻,可以有多个线程同时向HashMap中写入数据,这样可能会导致数据不一致。
4、如果需要同步,可以使用collections的synchronizedMap方法使HashMap具有同步的功能,或者使用concurrentHashMap

一、Hashtable的特点介绍

1、Hashtable与HashMap类似,它继承自Dictionary类,不同的是,它不允许记录的键或者值为空(一个也不行)
2、Hashtable支持线程同步,即任意时刻只有一个线程能向Hashtable中写入数据,因此Hashtable写入时比较慢

一、LinkedHashMap的特点介绍

1、LinkedHashMap是HashMap的一个子类,保存了记录的插入顺序,再用Iterator遍历LinkedHashMap时,先得到的数据一定是先插入的。
2、可以在构造的时候带上参数,按照应用的次数排序,在遍历的时候会比HashMap慢,存在特殊情况,当HashMap容量很大,实际数据比较少的时候,遍历可能比LinkedHashMap慢,因为LinkedHashMap遍历的速度只和实际数据有关和容量无关。

一、TreeMap的特点介绍

1、TreeMap实现了sortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序进行排序
2、可以指定排序的比较量,当用Iterator遍历TreeMap时,得到的记录是排过序的
3、建议看一下TreeMap底层实现的数据结构红黑树

总结:

1、一般情况下,我们用的最多的是HashMap,在Map中插入、删除、和查找数据的时候,HashMap是最好的选择。
2、如果想要按照自然顺序或者自定义的顺序遍历键,那么TreeMap会更好
3、如果需要输出顺序和输入的相同,那么用LinkedHashMap可以实现,它可以按照顺序排列

了解不同的数据结构的使用场景,在不同的场景中选择最好的数据结构。

你可能感兴趣的:(Java基础)