集合框架(Collection Framework)是Java最强大的子系统之一,位于java.util 包中。集合框架是一个复杂的接口与和类层次,提供了管理对象组的最新技术。Java集合框架标准化了程序处理对象组的方式。
集合框架在设计上需要满足几个目标。首先,框架必须是高性能的。基本集合(动态数组、链表、树以及哈希表)的实现是高效率的。很少需要手动编写这些数据引擎中的某一个。其次,框架必须允许不同类型的集合以类似的方式进行工作,并且具有高度的互操作性。再次,扩展或改造必须易于实现。为了满足这些目标,整个集合框架基于一套标准接口进行构造,提供了这些接口的一些可以直接使用的标准实现(如LinkedList、HashSet和TreeSet)。作为一种选择,也可以实现自己的集合。为了方便,提供各种特定目的的实现。最后,必须添加可以将标准数组集成到集合框架中的机制。
算法是集合机制的另外一个重要组成部分。算法操作集合,并且被定义为Collections类中的静态方法。因此,所有集合都可以使用它们。
与集合框架密切相关的另一个内容是 Iterator 接口。迭代器为访问集合中的元素提供了通用、标准的方式,每次访问一个元素。因为每个集合都提供了迭代器,所以可以通过Iterator定义的方法访问所有集合类的元素。
Collection接口是构建集合框架的基础,因为定义集合的所有类都必须实现该接口,Collection是泛型接口
public interface Collection<E> extends Iterable<E>
其中,E指定了集合中存储的对象类型。Collection接口扩展了 Iterator 接口。
方法 | 说明 |
---|---|
boolean add(E e) |
确保此集合包含指定的元素(可选操作)。
|
boolean addAll(Collection<? extends E> c) |
将指定集合中的所有元素添加到此集合(可选操作)。
|
void clear() |
从此集合中删除所有元素(可选操作)。
|
boolean contains(Object o) |
如果此集合包含指定的元素,则返回 true 。
|
boolean containsAll(Collection<?> c) |
如果此集合包含指定 集合中的所有元素,则返回true。
|
boolean equals(Object o) |
将指定的对象与此集合进行比较以获得相等性。
|
int hashCode() |
返回此集合的哈希码值。
|
boolean isEmpty() |
如果此集合不包含元素,则返回 true 。
|
boolean remove(Object o) |
从该集合中删除指定元素的单个实例(如果存在)(可选操作)。移除返回true
|
boolean removeAll(Collection<?> c) |
删除指定集合中包含的所有此集合的元素(可选操作)。
|
default boolean removeIf(Predicate<? super E> filter) |
删除满足给定谓词的此集合的所有元素。
|
boolean retainAll(Collection<?> c) |
仅保留此集合中包含在指定集合中的元素(可选操作)。
|
int size() |
返回此集合中的元素数。
|
Object[] toArray() |
返回一个包含此集合中所有元素的数组。
|
<T> T[] toArray(T[] a) |
返回包含此集合中所有元素的数组; 返回的数组的运行时类型是指定数组的运行时类型。
|
方法详细信息
toArray
Object[] toArray()
clear
void clear()
从此集合中删除所有元素(可选操作)。 此方法返回后,集合将为空。异常 UnsupportedOperationException
- 如果此 集合不支持clear操作
add
boolean add(E e)
如果一个集合拒绝添加一个特定的元素,除了它已经包含该元素之外,它必须抛出异常(而不是返回false )。 这保留了一个集合在此调用返回后始终包含指定元素的不变量。
- 参数
e
- 要确保在此集合中的存在的元素 - 结果 true如果此集合由于调用而更改
- 异常
-
UnsupportedOperationException
- 如果此 集合不支持add操作 -
ClassCastException
- 如果指定元素的类阻止将其添加到此集合 -
NullPointerException
- 如果指定的元素为空,并且该集合不允许空元素 -
IllegalArgumentException
- 如果元素的某些属性阻止其添加到此集合 -
IllegalStateException
- 如果由于插入限制,此时无法添加该元素