Map的分类和常见情况

Java 为数据结构中的映射定义了一个接口 java.util.Map 它有4个实现类,分别为HashMap,HashTable,LinkedHashMap 和 TreeMap。
 Map其中主要用来存储键值对,根据键得到值,因此不允许键重复(重复了就会覆盖),但允许值重复。
 HashMap是最常用的Map,它根据键的 HashCode 值存储数据,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最对只允许一条记录的键值为Null,允许多条记录的值为Null,不支持线程同步。如果需要同步,可以用Collections的synchronizedMap方法使其具备 同步的能力,或者使用ConcurrentHashMap。
 HashTable与HashMap类似,不同的是:它不允许键和值为空,但支持线程同步,因此其写入效率比较慢。
 LinkedHashMap 是 HashMap的一个子类,保存了记录的插入顺序,再使用Iterator遍历时,先得到的数据肯定是先插入的,也可以在构造时用带参数,按照应用次数排序。遍历时会比HashMap慢,但当HashMap容量很大,实际数据很少时,遍历起来可能会必LinkedHashMap慢,因为LinkedHashMap的遍历只和实际数据有关,和容量无关。
 TreeMap 实现SortMap接口,能够把它保存的记录根据键排序,默认键值是升序排序的,也可以指定排序的比较器,当遍历时,得到的记录是排序的。
 一般情况下,我们用的最多的就是HashMap,在Map中插入,删除和定位元素,它是更好的

你可能感兴趣的:(Map的分类和常见情况)