Collection是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素,JDK 不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现
一、源码解析
1、接口定义
public interface Collection<E> extends Iterable<E>{
}
collection继承自Iterable,所以其有Iterable的所有相关的方法。
2、查询方法
// 返回数组的长度,如果数组的长度大于Integer最大值,返回Integer最大值。
int size();
// 判断该集合是否为有元素
boolean isEmpty();
// 判断元素o是否在集合中
boolean contains(Object o);
// 获取集合的交集,如果集合有改变那么返回为true,否则返回为false。
boolean containsAll(Collection<?> c);
3、操作集合元素的方法
// 将元素E添加到该集合中
boolean add(E e);
// 将集合c添加到该集合中
boolean addAll(Collection<? extends E> c);
// 将该集合清空
void clear();
// 从集合中删除o元素
boolean remove(Object o);
// 从集合中删除c集合
boolean removeAll(Collection<?> c);
// 仅保留该集合中那些也包含在指定集合c中的元素
boolean retainAll(Collection<?> c);
// 删除满足给定谓词的此集合的所有元素
default boolean removeIf(Predicate<? super E> filter) {
Objects.requireNonNull(filter);
boolean removed = false;
final Iterator<E> each = iterator();
while (each.hasNext()) {
if (filter.test(each.next())) {
each.remove();
removed = true;
}
}
return removed;
}
4、其他方法
// 返回一个包含此集合中所有元素的数组
Object[] toArray();
// 返回包含此集合中所有元素的数组; 返回的数组的运行时类型是指定数组的运行时类型
<T> T[] toArray(T[] a);
// 获取集合的流,返回可能并行的以此集合作为源的Stream
default Stream<E> stream() {
return StreamSupport.stream(spliterator(), false);
}
// 获取集合的并行
default Stream<E> parallelStream() {
return StreamSupport.stream(spliterator(), true);
}
// 获取迭代器Itertor
public abstract Iterator<E> iterator();
// 返回集合的Spliterator
default Spliterator<E> spliterator() {
return Spliterators.spliterator(this, 0);
}
// 判断两个集合是否相同
boolean equals(Object o);
// 获取集合的hashcode
int hashCode();
二、总结
Collection接口是最基本的集合接口,它在继承了Iterable接口方法的同时,提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现,在后面我会向大家一一介绍。