(常用)HashMap : Map基于散列表的表现.插入和查询"键值对"的开销是固定的,可以通过构造器设置容量和负载因子,以调整容器的性能
LinkedHashMap : 类似于HashMap, 但是迭代遍历它时,取得"键值对"的顺序是其插入顺序,或者是最近最少使用(LRU)的顺序,只比HashMap慢一点;而在迭代访问方面速度更快,因为他是使用链表维护内部次序的
TreeMap : 基于红黑树的实现.查看"键"或者"键值对"时,他们会被排序(次序由Comparable或Comparator决定).TreeMap的特点在于所得到的结果是经过排序的.TreeMap是唯一带有subMap()方法的Map他可以返回一棵子树
WeakHashMap : 弱键映射 允许释放映射所指向的对象;如果映射之外没有引用指向某个"键",则此"键"可以被垃圾回收
ConcurrentHashMap : 一种线程安全的Map 他不涉及同步加锁
IdentityHashMap : 使用==替代equals对键进行比较的散列映射
public class LinkedHashMapDemo {
public static void main(String [] args) {
LinkedHashMap<Integer,String> linkedHashMap = new LinkedHashMap<>() ;
putValues(linkedHashMap);
System.out.println(linkedHashMap);
//设置最近最少使用(LRU)策略
linkedHashMap = new LinkedHashMap<>(16,0.75f,true) ;
putValues(linkedHashMap);
System.out.println(linkedHashMap);
for(int i = 0 ; i < 6; i ++) {
linkedHashMap.get(i) ;
}
System.out.println(linkedHashMap);
linkedHashMap.get(0) ;
System.out.println(linkedHashMap);
}
public static void putValues(Map map) {
for(int i = 0 ; i < 10; i ++) {
map.put(i,Integer.toString(i)) ;
}
}
}