1. Map的分类
接口 | java.util.Map |
---|---|
实现类 | HashMap、Hashtable、LinkedHashMap、TreeMap |
- Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了会覆盖),但允许值重复。
1.1 Hashmap
-
根据hashcode值存储数据,根据建直接获取它的值,但是遍历时取得的数据是随机的;
-
HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步。
1.2 Hashtable
- 与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;
- 它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。
1.3 LinkedHashMap
- 是HashMap的一个子类,保存了记录的插入顺序,数据输出的顺序和输入的相同;
- LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。
1.4 TreeMap
- 实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的;
- 要按自然顺序或自定义顺序遍历键时使用TreeMap好。