JDK源码-Collection
程序员文章站
2022-05-23 16:21:47
...
概述
Collection为集合类,集合体系结构中的根接口,根据源码的注释,能了解到整个集合体系设计的重点如下:
这么多个接口实现类,有常使用的、也有不常用的,下面我们来看Collection这个类的源码,把官方的注释翻译一下贴出来:
public interface Collection<E> extends Iterable<E> {
// Query Operations
/**
* 返回此集合中的元素数,如果这个集合元素个数超过Integer.MAX_VALUE,则返回Integer.MAX_VALUE
* 意思是此集合最大长度为:Integer.MAX_VALUE
*/
int size();
/**
* 如果此集合不包含任何元素,则返回true
* 该方法用于判断此集合是否为空
*/
boolean isEmpty();
/**
* 如果此集合包含指定的元素,则返回true
* 用户判断此集合是否包含元素 o
*/
boolean contains(Object o);
/**
* 返回此集合中元素的迭代器。
*/
Iterator<E> iterator();
/**
* 集合转换为数组,此方法必须返回原集合中的元素相同的顺序
*/
Object[] toArray();
/**
* 返回一个泛型数组
*/
<T> T[] toArray(T[] a);
/**
* 往集合添加元素,并返回添加后的结果 true or false
*/
boolean add(E e);
/**
* 从此移除指定元素的单个实例,并返回结果
*/
boolean remove(Object o);
/**
* 如果此集合包含所有元素,则返回true
*/
boolean containsAll(Collection<?> c);
/**
* 将指定集合中的所有元素添加到此集合中
*/
boolean addAll(Collection<? extends E> c);
/**
* 删除此集合中也包含的所有元素
*/
boolean removeAll(Collection<?> c);
/**
* 删除此集合中满足给定条件的所有元素
* @since 1.8 版本新添加的方法
*/
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;
}
/**
* 仅保留此集合中包含在元素c中的元素,两个集合取交集
*/
boolean retainAll(Collection<?> c);
/**
* 从此集合中删除所有元素
*/
void clear();
/**
* 不用解释了
*/
boolean equals(Object o);
/**
* 返回此集合的哈希码值
*/
int hashCode();
/**
* 在此集合中的元素上创建一个拆分迭代器
*
* @since 1.8 新增方法
*/
@Override
default Spliterator<E> spliterator() {
return Spliterators.spliterator(this, 0);
}
/**
* 将默认的迭代器拆分后聚合流,在此基础上可以进行过滤、分组、统计等操作
* @since 1.8 新增方法
*/
default Stream<E> stream() {
return StreamSupport.stream(spliterator(), false);
}
/**
* 返回与此集合为准的可能并行的{@code Stream}
* @since 1.8
*/
default Stream<E> parallelStream() {
return StreamSupport.stream(spliterator(), true);
}
}
下一篇: 对于HashMap的一些疑问