Collection 接口用于表示无序、允许重复的集合。
构建 Collection 对象
使用
Collection
接口定义变量,使用
new
创建具体的实现类。
Collection co=new ArrayList();
由于使用接口定义变量,所以可以
new
任何
Collection
接口的实现
类,例如
HashSet
、
Vector
、
LinkedList
等【多态性】
1、int size();
获取集合中的存储元素个数,由于具体实现类的区别,所以 size 不一定是添加元素个数 。
数组中实际上是不能直接获取其中存储的元素个数,集合中可以分为两个概念:容积
capacity
是表示可以存放
的元素个数,类似于集合的
length
;
size
表示实际存储的元素个数。
2、boolean add(E e);
向集合中添加元素 e。
3、boolean isEmpty();
判断集合中的元素个数是否为 0,不能使用这个方法判断引用对象是否为 null 。
注意:只判断集合中是否没有元素,并不会判断集合是否为
null
,如果需要判断集合变量是否为
null
,需要自行编程实现,例如
Objects.nonNull(co)
或者
co!=null 。
4、boolean contains(Object o);
判断集合中是否包含指定元素 o,有 true 没有 false。不能判断集合中是否包含 null 元素。如果编程实现添加 add(null)则可以判断正确,默认添加的 null 并不能进行判断。
5、Iterator<E> iterator();
Iterable 接口中定义的方法,获取迭代器对象用于遍历集合中的所有元素。
遍历 Collection 集合中元素的写法:
public class Test {
public static void main(String[] args) {
Collection co = new ArrayList();
ThreadLocalRandom r = ThreadLocalRandom.current();
for (int i = 0; i < 10; i++)
co.add(r.nextInt(100)); //自动装箱
//1、可以使用 Iterable 接口提供的获取 Iterator 对象进行遍历访问
Iterator it = co.iterator(); //可以将迭代器理解为一个指向集合元素的指针
while (it.hasNext()) { // 判断当前指针所指向的位置后续是否有元素,有 true 没有 false
Object ele = it.next();//位置指针后移,并获取位置指针所指向的元素
System.out.println(ele);
ele = 111; // 通过迭代器直接修改集合元素无效,除非是原地修改
}
//2、使用 Iterator 的 forEachRemaining 方法遍历集合中的所有元素
it = co.iterator();
it.forEachRemaining((Object obj) -> {
System.out.println(obj);
obj = 222; // 通过迭代器直接修改集合元素无效,除非是原地修改
});
//3、使用 Collection 接口的父接口 Iterable 中的方法 forEach
co.forEach((Object obj) -> {
System.out.println(obj);
obj = 333; // 直接修改集合元素无效,除非是原地修改
});
//4、foreach 结构
for (Object tmp : co) {
System.out.println(tmp);
tmp = 444; // 直接修改集合元素无效,除非是原地修改
}
}
}
6、Object[] toArray();
将集合转换为 Object 类型的数组。
7、<T> T[] toArray(T[] a);
使用泛型将集合转换为特定类型的数组。
8、boolean remove(Object obj);
从集合中删除指定的元素 obj,如果删除成功 true 否则 false。
9、default boolean removeIf(Predicate<? super E> filter)
判断集合是否删除过数据,删除了返回
true,
否则
false。
10、void clear();
清空集合中的所有元素。