JDK源码解析之Java.util.Collection

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 类库中有很多具体的实现,在后面我会向大家一一介绍。

猜你喜欢

转载自blog.csdn.net/weixin_45187434/article/details/108867271