一、集合概论
集合(Collection)是Java中非常重要的一个概念,是一组对象的容器。它们被设计为基于两个基本原则:一是对对象的集合进行统一的操作和管理,二是支持不同类型的集合结构,以适应不同的应用场景和需求。
Java中的集合框架位于java.util包中,共包含以下接口:
-
Collection:表示一组对象的基本接口,它是所有集合的根接口。
-
List:有序集合,其中每个元素都有一个索引,可以通过索引访问元素。
-
Set:无序集合,不能包含重复元素。
-
Queue:一种特殊的线性表,支持两种操作:插入和删除,通常用于实现队列和优先级队列。
-
Map:一种映射表,其中每个元素都是一个键值对,提供了便于使用键来查找值的方法。
-
SortedSet:有序Set集合。
-
SortedMap:有序Map集合。
集合框架中的每个接口都有多个实现类,常用的有:
-
ArrayList:线性表,基于数组实现,随机访问效率高。
-
LinkedList:线性表,基于链表实现,插入、删除效率高。
-
HashSet:基于哈希表实现,不能包含重复元素。
-
TreeSet:基于红黑树实现,元素是有序的。
-
HashMap:基于哈希表实现,以键值对的方式存储数据。
-
TreeMap:基于红黑树实现,以键值对的方式存储数据,元素是有序的。
二、集合接口继承关系
如下图所示,集合接口继承关系如下所示:
三、集合操作
- Collection接口中的基本操作
Collection接口中定义了一些基本的操作,包括添加、删除、判断是否包含以及获取集合元素的个数等。下面是一些常用的方法:
-
add:添加元素到集合中。
-
remove:从集合中删除元素。
-
size:返回集合中元素的数量。
-
contains:判断集合中是否包含某个元素。
-
isEmpty:判断集合是否为空。
-
clear:清空集合中所有的元素。
-
List接口中的基本操作
List接口是有序集合,它的每个元素都有一个索引,可以通过索引访问元素。它除了包含Collection接口的基本操作之外,还定义了一些特定的操作。下面是一些常用的方法:
-
get:根据索引获取对应的元素。
-
set:替换指定索引处的元素。
-
add:在指定索引处插入元素。
-
remove:删除指定索引处的元素。
-
indexOf:返回元素在集合中第一次出现的索引。
-
Set接口中的基本操作
Set接口是无序集合,不能包含重复元素。它除了包含Collection接口的基本操作之外,还定义了一些特定的操作。下面是一些常用的方法:
-
add:添加元素到集合中。
-
remove:从集合中删除元素。
-
size:返回集合中元素的数量。
-
contains:判断集合中是否包含某个元素。
-
isEmpty:判断集合是否为空。
-
clear:清空集合中所有的元素。
-
Map接口中的基本操作
Map接口是一种映射表,其中每个元素都是一个键值对,提供了便于使用键来查找值的方法。下面是一些常用的方法:
-
put:向map中添加键值对。
-
get:根据键获取对应的值。
-
remove:从map中删除指定的键值对。
-
size:返回map中键值对的数量。
-
containsKey:判断map中是否包含指定的键。
-
containsValue:判断map中是否包含指定的值。
-
isEmpty:判断map是否为空。
-
clear:清空map中所有的键值对。
-
迭代器
迭代器(Iterator)是集合框架中的一个重要概念,它提供了一种遍历集合元素的机制。所有实现Collection接口的类都可以获取它的迭代器。迭代器实现了一种数据访问模型,可以访问集合中的元素,而不需要知道集合的内部结构。迭代器提供了三个方法:
-
hasNext:判断是否还有下一个元素。
-
next:获取下一个元素。
-
remove:删除集合中迭代器返回的上一个元素。
四、集合实现类的选择
Java中的集合框架提供了多种集合实现类,不同的实现类有着不同的特点和适用范围。选择合适的集合实现类可以提高代码的效率和可读性。
- List的选择
如果需要随机访问集合中的元素,可以选择ArrayList;如果需要频繁地插入和删除元素,可以选择LinkedList。
- Set的选择
如果不关心元素的顺序,且要求不能包含重复元素,可以选择HashSet;如果需要按照元素的自然排序来存储元素,可以选择TreeSet。
- Map的选择
如果需要根据键来查找值,可以选择HashMap;如果需要按照键的自然排序来存储键值对,可以选择TreeMap。
五、总结
Java中的集合框架是像List、Set、Queue、Map等多个接口和对应的实现类,它们提供了各种集合结构和操作方式,适用于各种不同的应用场景和需求。Java中的集合框架提供了一套完善的机制来处理集合数据,让程序员能够更加高效地处理集合数据,提高代码的效率和可读性。