抽象类 AbstractList、AbstractSet、AbstractQueue 包含了这些接口的通用部分。
List
List 是有序集合,提供了方便的访问、插入、删除等操作。
ArrayList、LinkedList、Vector 都实现了 List 接口
它们的设计目标不同,具体行为、性能和线程安全方面也不同。
ArrayList
这是应用最广泛的动态数组。非线程安全;扩容时会增加 50%
扩容方式就是新建一个更大的内部数组,将原内部数组的数据拷贝到新数组中
Vector
这是Java早期提供的线程安全的动态数组。扩容时会增加 1倍。
扩容方式与 ArrayList 相同
如果没有线程安全的需求,建议不要使用该类,以避免同步开销。
LinkedList
这是双向链表。非线程安全;不需要像ArrayList那样新建内部数组式的扩容
ArrayList 和 Vector 因为内部是数组,所以非常适合随机访问。除了对尾部元素的插入和删除,性能都较差。
LinkedList 的随机访问效率较差,但是元素插入、删除操作更高效。
Set
Set 不允许存在重复元素,即任意两个元素 equals 返回 false
HashSet
LinkedHashSet
LinkedHashSet 内部就是一个 LinkedHashMap。
LinkedHashMap 内部用双向链表记录了元素的“访问”顺序,可以支持对 LinkedHashSet 按照访问顺序遍历。put、get、compute等相关操作都属于“访问”
最不常被访问的元素排在最前
理想情况下也能提供常数时间的添加、删除、包含等操作。
因为需要维护链表,所以性能略低于 HashSet。
也因为这个内部链表,LinkedHashSet 的遍历性能只与元素数量有关。而 HashSet 的遍历性能受自身容量影响,容量过大,性能会降低。
TreeSet
TreeSet 内部就是一个 TreeMap。
支持自然顺序访问,但是添加、删除、包含等操作效率较低(log(n))
Queue / Deque
Queue / Deque 是队列结构。Queue 支持先入先出(FIFO),Deque 支持后入先出(LIFO)。
Stack vs Deque:两者都是“栈”。Stack 是Java早期的集合类。如果你需要的就是一个“栈”,即数据后入先出,则选 Deque。这也是面向接口编程的更优选择。
相关推荐
计算机后端-Java-Java核心基础-第24章 集合01 04. 复习:Collection.avi
计算机后端-Java-Java核心基础-第24章 集合01 08. 使用Iterator遍历Collection.avi
计算机后端-Java-Java核心基础-第24章 集合01 05. Collection接口的常用方法2.avi
计算机后端-Java-Java核心基础-第24章 集合01 07. Collection接口的常用方法4.avi
计算机后端-Java-Java核心基础-第24章 集合01 06. Collection接口的常用方法3.avi
Collection 接口是 Java 集合框架的核心接口,定义了基本的集合操作方法,如 add()、remove()、contains() 等。Collection 接口有多个子接口,分别是 List、Set 和 Queue 接口,每个子接口都定义了特定的集合操作...
Java集合框架是Java编程语言中的一个核心组件,它为数据存储和管理提供了强大的支持。这个框架包括了多种接口和类,使得程序员可以高效地处理对象集合。在"Java--collection.rar"这个压缩包中,我们可以找到名为...
在准备大数据面试的过程中,Java基础是必不可少的一部分,尤其聚焦于集合类、多线程和JVM这三大核心领域。下面将分别对这三个方面进行深入探讨。 **一、Java集合类** Java集合框架是处理对象组的重要工具,它包括...
"Java-Interview-Collection.rar" 是一个针对Java面试准备的资源包,其中包含了一份名为"Java Interview Collection.txt"的文本文件,很可能是对Java面试常见问题的集合。 在Java面试中,以下是一些关键知识点,...
MongoDB Java驱动程序的核心概念包括: 1. **连接MongoDB**:通过创建`MongoClient`实例,你可以连接到本地或远程MongoDB服务器。例如: ```java MongoClient mongoClient = new MongoClient("localhost", 27017)...
通过学习和复习这些知识点,并结合"Java-Interview-超全集合github上评分最高的jiva面试题"中的题目进行实战演练,可以有效地提升Java开发者在面试中的竞争力,为成功获得理想职位打下坚实基础。在面试准备过程中,...
标题中的“JAVA-algorithm-subject-collection.rar”表明这是一个与Java编程语言相关的算法题目集合,而“site:www.pudn.com”则可能是指这个资源来源于网络平台PUDN,通常这个平台分享各种技术资料和学习资源。...
Java核心编程涵盖了Java语言的基础和高级特性,包括集合框架、数据结构、IO流、多线程、异常处理等。在Java中,集合是用于存储多个对象的容器,它提供了多种操作数据的方法。本文将深入探讨Java集合框架中的...
- **Collection接口**:这是所有集合类的基础接口,定义了添加(add)、迭代(iterator)、检查(contains)等通用方法。 - `add(E e)`:将指定元素添加到此集合中。 - `iterator()`:返回一个迭代器,用于遍历集合中的...
`java.util`包还定义了多个接口,如`Collection`、`List`、`Set`和`Map`,它们是Java集合框架的核心。`Collection`是最基础的接口,所有集合类的父接口。`List`接口扩展了`Collection`,并提供了有序的元素存储和...
### 达内Java课程——Java核心编程10天知识点详解 #### 散列表Map - **概念**: 散列表是一种非常高效的数据结构,它通过特定的哈希函数将键值映射到表的一个位置来访问记录,这使得查找操作能在平均时间复杂度为O(1...
【标题】"mi-yi-collection-bean-master_java_源码" 涉及的主要知识点是Java集合框架中的Bean类和其在实际项目中的应用。这个压缩包可能包含了一个Java项目,其中的核心部分是对集合对象(如List、Set、Map等)进行...