Java集合框架——Map
Map hashMap:存放键值对的容器 ConcurrentHashMap(1.7) 1.8中ConcurrentHashMap SynchronizedMap&HashTable hashMap:存放键值对的容器 1、数据结构: 1.7:数组+链表 1.8:数组+链表+红黑树 (1.7Entry类;1.8Node类。本质一样) 内部包含了一个 Entry 类型的数组 table。Entry 存储着键值对,又存放了下一个Entry。所以Entry其实是一个链表。即数组中的每个位置被当成一个桶,一个桶存放一个链表。HashMap 使用拉链法来解决冲突,同一个链表中存放哈希值和散列桶取模运算结果相同的 Entry。 1.8较1.7引入了红黑树对hashMap数据结构进行优化; 引入原因:提高性能 当链表过长导致索引效率慢,利用红黑树快速增删改查优点,将时间复杂度由O(n)–>O(log(n)) 应用场景:链表长度 >8,转化为红黑树 2、主要使用API: 1.7与1.8基本相同 V get ( Object key ) ; // 获得指定键的值 V put ( K key , V value ) ; // 添加键值对 void putAll ( Map < ? extends K , ? extends V > m ) ; // 将指定Map中的键值对 复制到 此Map中 V