美文网首页
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

相关文章

  • 一篇文章,全面解读Android面试知识点

    Java Java基础 Java集合框架 Java集合——ArrayList Java集合——LinkedList...

  • 收藏夹

    博文 Java 集合:Java 集合学习指南 Java 集合:Java 集合源码剖析 HashMap:HashMa...

  • Java 集合框架_开篇

    Java 集合框架系列 Java 集合框架_开篇Java 集合框架_ListJava 集合框架_ArrayList...

  • Java 集合框架_List

    Java 集合框架系列 Java 集合框架_开篇Java 集合框架_ListJava 集合框架_ArrayList...

  • 9、java集合

    1、什么是java集合 java集合是用来存储多个数据引用的数据类型。 2、java集合分类 java集合类在ja...

  • 【集合框架】

    集合框架(怎么实现、适用场景) hash相关 Java集合框架 Java集合框架综述Java集合框架面试问题集锦 ...

  • Java基础——集合体系Map详解

    Java基础——集合体系Map详解 上文中我们了解了集合体系中的单列集合:Java基础——集合以及Java集合——...

  • Java基础

    Java集合框架 一、Java集合类简介: Java集合大致分为四种体系:Set:无序、不可重复的集合List:有...

  • JavaSE集合类

    JavaSE集合类 概述 Java中集合类概述Java中数组与集合的比较Java中集合框架层次结构 Collect...

  • 集合系列(一):集合框架概述

    集合系列(一):集合框架概述 Java 集合是 Java API 用得最频繁的一类,掌握 Java 集合的原理以及...

网友评论

      本文标题:JAVA集合

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