HashMap | 哈希表+链表+红黑树 结构实现 线程不安全 |
TreeMap | 底层是红黑树的实现,key类型必须实现Comparable接口 |
HashTable | 哈希表+链接+红黑树 结构实现,线程安全 |
Map接口
键值对存储 key value,键不能重复,值可以重复。
HashMap<String, String> map = new HashMap<>(); map.put(null,"A");//添加key value map.put("b","B");//只能允许存储一个为null的键 map.put("c","C"); map.put("d","D"); map.put("e","E"); map.put("e","EE");//会覆盖上一个 map.remove("a");//移除 key为a System.out.println(map.get("a"));//得到key为a 的value System.out.println(map.containsKey("b"));//是否含有key为b System.out.println(map.containsValue("C"));//是否含有value为C的key System.out.println(map);
哈希表可以存储一个为null的键。
而哈希树不可以,因为其线程是安全的。
/* Map底层为了方便遍历 将键值对存到一个entry对象中,将多个entry对象放到Set集合中 */ Set<Map.Entry<String,String>> entrySet=map.entrySet(); for(Map.Entry<String,String> entry:entrySet){ System.out.println(entry.getKey()+"-"+entry.getValue()); }