美文网首页
Collection和map

Collection和map

作者: 天地一蜉蝣_6e86 | 来源:发表于2018-06-02 14:43 被阅读0次

    Collection的子类有List和Set,Map 是独立的接口。

    一、Map

    1.HashMap

    Hashmap 的数据结构是数组类型,每个数组的元素是一个链表,在jdk 8 中 链表长度超过8,链表会转化成红黑树以增强查找效率。HashMap不是线程安全的。LinkedhashMap 是HashMap的子类,可以用于构建LRUCache。

    面试常见问题:HashMap 数据结构。

    线程安全,为什么不安全,resize不安全原理。

    put,get 过程。

    2.ConcurrentMap

    线程安全Map,jdk8 中优化了同步锁,使用了Cas锁,锁的粒度变小。

    弱一致性:ConcurrentHashMap的迭代器创建后,就会按照哈希表结构遍历每个元素,但在遍历过程中,内部元素可能会发生变化,如果变化发生在已遍历过的部分,迭代器就不会反映出来,而如果变化发生在未遍历过的部分,迭代器就会发现并反映出来,这就是弱一致性。

    3.TreeMap

    线程安全Map,内部数据结构是红黑树,同步锁会整体锁。锁粒度较大。TreeMap 是有序的,插入的时候会进行比较。

    二、Collection

    1.List

    ArrayList 内部使用数组,LinkedList 使用链表数据结构。二者对于不同场景效率不同,ArrayList 按下标查询效率高,LinkedList 随机插入效率较高。

    2.Set

    HashSet内部使用HashMap,不允许存在相同的值。

    集合方面的类是java 基础,需要了解其实现原理,是否线程安全,不安全的场景。

    相关文章

      网友评论

          本文标题:Collection和map

          本文链接:https://www.haomeiwen.com/subject/awrrsftx.html