Java集合框架详解(二)——Collection源码分析

Collection源码:

package java.util;

import java.util.function.Predicate;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;

public interface Collection extends Iterable {
	//定义长度
	int size();
	//是否为空
	boolean isEmpty();
	//是否包含某个元素
	boolean contains(Object o);
	//返回一个迭代器iterator
	Iterator iterator();
	//返回集合中所有元素组成的数组,数组元素的返回顺序要和迭代器访问集合元素的返回顺序一样 
	Object[] toArray();
	//返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。
	 T[] toArray(T[] a);
	//向集合中添加一个元素,如果集合不允许重复元素,且集合中已经含有该元素,返回false
	boolean add(E e);
	//从此集合中移除一个指定元素,如果集合中存在指定元素,返回true
	boolean remove(Object o);
	//如果此集合中包含指定集合中的所有元素,则返回true
	boolean containsAll(Collection<?> c);
	//将指定集合中的所有元素都添加到此集合中
	boolean addAll(Collection<? extends E> c);
	//移除此集合中指定集合的所有元素
	boolean removeAll(Collection<?> c);
	default boolean removeIf(Predicate<? super E> filter) {
		Objects.requireNonNull(filter);
		boolean removed = false;
		final Iterator each = iterator();
		while (each.hasNext()) {
			if (filter.test(each.next())) {
				each.remove();
				removed = true;
			}
		}
		return removed;
	}
	//仅保留此集合中那些也包含在指定集合中的元素
	boolean retainAll(Collection<?> c);
	//移除此集合的所有元素
	void clear();
	//比较次集合与指定对象是否相等,通过覆盖,实现list与list相等,set与set相等
	boolean equals(Object o);
	//返回此集合的哈希值
	int hashCode();

	@Override
	default Spliterator spliterator() {
		return Spliterators.spliterator(this, 0);
	}
	
	default Stream stream(){
		return StreamSupport.stream(spliterator(), false);
	}
	
	default Stream parallelStream(){
		return StreamSupport.stream(spliterator(), true);
	}
}

从源码中可以看出Collection是一个接口,它是一个高度抽象出来的集合,包含了集合的基本操作:添加、删除、清空、遍历、是否为空、获取大小等。

    原文作者:java集合源码分析
    原文地址: https://blog.csdn.net/qq_21908817/article/details/75048097
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞