美文网首页
集合:java中的集合有哪些?有什么区别?

集合:java中的集合有哪些?有什么区别?

作者: 抄无止境 | 来源:发表于2019-10-23 14:32 被阅读0次
    image.png
    ConcurrentHashMap/ConcurrentHashSet

    底层哈希实现的同步 Map(Set)。效率高,线程安全。使用系统底层技术实现线程安全。
    量级较 synchronized 低。key 和 value 不能为 null。

    ConcurrentSkipListMap/ConcurrentSkipListSet

    底层跳表(SkipList)实现的同步 Map(Set)。有序,效率比 ConcurrentHashMap 稍低。

    List

    1.ArrayList集合
    • 底层数据结构是数组,查找快,增删慢。
    • 线程不安全的,效率高
    2. Vector集合
    • 底层数据结构是数组,查询快,增删慢
    • 线程安全的,效率也很高。
    3.LinkedList集合
    • 底层数据结构是链表,查询慢,增删快
    • 线程不安全,效率高
    CopyOnWriteArrayList
    • 写时复制集合。写入效率低,读取效率高。
    • 每次写入数据,都会创建一个新的底层数组。

    Set集合 (元素不可重复,元素唯一)

    1.Hashset集合

    非线程安全的

    • 底层数据结构是哈希表,哈希表依赖两个方法hascode ()和equals()方法
    • 两个方法的执行顺序:
        首先判断hascode()值是否相同
        是:继续执行equals()方法,看其返回值
        是true:说明元素重复,不添加
        是false:就直接添加元素
        否:就直接添加到集合
    2.TreeSet集合

    非线程安全的

    • 底层数据结构是二叉树
    3.LinkedHashSet

    Map

    1.HashMap

    非线程安全的
    底层数据结构是哈希表

    2.TreeMap

    非线程安全的
    底层数据结构是二叉树

    1.HashTable

    线程安全的

    LinkedHashMap
    ConcurrentHashMap
    ConcurrentSkipListMap

    java中的集合的选择

    根据实际需求来选择合适的集合。

    1.单列还是双列?

    单列就选Collection类型的
    双列选Map类型的

    2.选择单列后

      看元素是否唯一?
        是: 选择Set集合
        否: 选择List集合
      看元素是否排序?
        是:TreeSet;
        否:HashSet
      看安全性高低?
        高:Vector
        低:ArrayList 或LinkedList
      增删多:LinkedList
      查询多:ArrayList

    相关文章

      网友评论

          本文标题:集合:java中的集合有哪些?有什么区别?

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