JavaSE - 集合类-单列集合框架
本节学习目标:
- 了解Java单列集合框架结构;
- 了解并掌握Collection接口及其方法;
- 了解并掌握List集合(接口)及其方法;
- 了解并掌握Set集合(接口)及其方法;
- 了解并掌握Queue集合(接口)及其方法;
- 了解并掌握单列集合实现类的特性和优缺点。
1. 单列集合框架结构
单列集合指只有一列数据的集合,单列集合中的每个数据被称为元素(Element),单列集合使用泛型E
限制元素的数据类型。
Java单列集合框架由Collection
根接口,继承Collection
接口的List
和Set
子接口,以及它们对应的多种实现类构成:
2. Collection 接口
Collection
接口为Java单列集合框架中的根接口,它预先定义了单列集合中的基本方法,单列集合中的常用方法如下:
方法 |
返回值类型 |
功能 |
size() |
int |
返回单列集合的长度
|
isEmpty() |
boolean |
判断单列集合是否为空集合
|
contains(Object o) |
boolean |
判断单列集合内是否包含o 对象 |
iterator() |
Iterator<E> |
继承于Iterable 接口的方法,返回当前单列集合的迭代器
|
toArray() |
Object[] |
以Object 数组形式返回当前单列集合 |
toArray(T[] a) |
T[] |
将当前单列集合转换为T 类型数组后返回 |
add(E e) |
boolean |
向单列集合中添加元素E ,返回是否添加成功 |
remove(Object o) |
boolean |
移除单列集合中的对象o ,返回是否移除成功 |
containsAll(Collection<?> c) |
boolean |
判断单列集合c 是否为当前单列集合的子集
|
addAll(Collection<? extends E> c) |
boolean |
将单列集合c 中的所有元素添加至当前单列集合,返回是否添加成功 |
removeAll(Collection<?> c) |
boolean |
移除当前单列集合中与单列集合c 的交集,返回是否移除成功 |
removeIf(Predicate<? super E> filter) |
boolean |
根据选择器中的条件移除当前单列集合中的元素,返回是否移除成功 |
retainAll(Collection<?> c) |
boolean |
移除当前单列集合中与单列集合c的补集,即保留交集内的元素,返回是否移除成功 |
clear() |
void |
移除当前单列集合中的所有元素
|
编写代码进行测试:
public class TestCollection {
public static void main(String[] args) {
Collection<Integer> collection = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
System.out.println("集合的长度:" + collection.size());
System.out.println("集合是否为空:" + collection.isEmpty());
System.out.println("集合的Object数组形式:" + Arrays.toString(collection.toArray()));
Integer[] i = collection.toArray(new Integer[0]);
System.out.println("将Integer集合转换为Integer数组:" + Arrays.toString(i));
collection.add(1);
System.out.println("向集合中添加元素1:" + Arrays.toString(collection.toArray()));
collection.remove(2);
System.out.println("移除集合中的2:" + Arrays.toString(collection.toArray()));
System.out.println("判断集合{1, 3}是否为当前集合的子集:" + collection.containsAll(new ArrayList<>(Arrays.asList(1, 3))));
collection.addAll(new ArrayList<>(Arrays.asList(6, 7)));
System.out.println("将集合{6, 7}加入到当前集合:" + Arrays.toString(collection.toArray()));
collection.removeAll(new ArrayList<>(Arrays.asList(1, 3)));
System.out.println("将集合{1, 3}从当前集合移除:" + Arrays.toString(collection.toArray()));
collection.removeIf(new Predicate<Integer>() {
@Override
public boolean test(Integer integer) {
return integer == 4;
}
});
System.out.println("使用选择器移除集合中的4:" + Arrays.toString(collection.toArray()));
collection.retainAll(new ArrayList<>(Arrays.asList(6, 7, 8)));
System.out.println("移除当前集合与集合{6, 7, 8}的补集:" + Arrays.toString(collection.toArray(