美文网首页
JAVA集合

JAVA集合

作者: Kael_Zhang的安卓笔记 | 来源:发表于2022-06-21 00:18 被阅读0次

    java集合分类

    Java集合大致可以分为Set、List、Queue和Map四种体系,其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而Map则代表具有映射关系的集合,Java 5 又增加了Queue体系集合,代表一种队列集合实现。Java集合就像一种容器,存放的是对象的引用

    集合和数组

    数组长度不可变,集合只能存放对象

    List

    • List有序、可重复,遍历方法很多
    • ArrayList
      数组结构,查询快,增删慢。
      线程不安全,效率高
    • LinkedList
      链表结构,查询慢,增删快。
      线程不安全,效率高
    • Vector
      数组结构,查询快,增删慢。
      线程安全,效率低

    Set

    • Set无序、不可重复
      需要hashCode()和equals()实现不可重复
      只能使用迭代器遍历
    • HashSet
      哈希表结构
      无序,不可重复
      需要实现hashCode()和equals()实现不可重复
    • LinkedHashSet
      插入遍历顺序一致
      链表和哈希表结构
      FIFO插入有序,唯一
      由链表保证元素有序
      需要hashCode()和equals()实现不可重复
    • TreeSet
      红黑树结构,有序
      自然排序
      比较器排序
      不可重复根据比较的返回值是否是0来决定(compareTo)

    Queue

    • Queue用于模拟队列这种数据结构,队列通常是指“先进先出”(FIFO)的容器。新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列头部的元素。通常,队列不允许随机访问队列中的元素。
    • 阻塞方法 take put
    • 双向、单向
    • LinkedList
      阻塞、非线程安全、无边界
    • PriorityQueue
      非阻塞、非线程安全、无边界
      支持优先级队列实现类。
    • ConcurrentLinkedQueue
      非阻塞、线程安全、无边界
      基于链接节点的队列实现类。
    • ArrayBlockingQueue
      阻塞、线程安全、有边界,
      创建的时候指定大小,一旦创建容量不可改变实现类
      默认是不保证线程的公平性,不允许向队列中插入null元素。
    • LinkedBlockingQueue
      阻塞、线程安全、可选有边界,
      一个由链表结构组成的可选有界阻塞队列实现类,如果未指定容量,那么容量将等于Integer.MAX_VALUE。
    • PriorityBlockingQueue
      阻塞、线程安全、无边界,
      支持优先级排序的无边界阻塞队列实现类。
    • DelayQueue
      阻塞、线程安全、无边界,
      使用优先级队列实现的无界阻塞队列实现类,只有在延迟期满时才能从中提取元素。
    • SynchronousQueue
      阻塞、线程安全、无数据队列,不存储元素、没有内部容量的阻塞队列实现类。
    • LinkedBlockingDeque
      阻塞、线程安全、无边界,由链表结构组成的可选范围双向阻塞队列实现类,如果未指定容量,那么容量将等于 Integer.MAX_VALUE

    Map

    • TreeMap是有序的,HashMap和HashTable是无序的。
    • Hashtable的方法是同步的,HashMap的方法不是同步的。这是两者最主要的区别。

    补充

    一般来说,由于数组以一块连续内存区来保存所有的数组元素,所以数组在随机访问时性能最好,所有的内部以数组作为底层实现的集合在随机访问时性能都比较好;而内部以链表作为底层实现的集合在执行插入、删除操作时有较好的性能。但总体来说, ArrayList 的性能比 LinkedList 的性能要好,因此大部分时候都应该考虑使用ArrayList 。

    如何选择

    image.png

    相关文章

      网友评论

          本文标题:JAVA集合

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