jdk1.6的集合源码阅读之Collection接口

        咱们知道java容器类类库的用途是“保存对象”,容器最顶层分为两个Collection和Map,其他的都是继承这连个接口,Collection存储一个独立元素的序列,下面有List 、Set、Queue,而Map主要存储 “键值对”对象,下面实现版本有hashMap和TreeSet。(而List、Set、Queue下面基本各有两三个实现版本。)java

        既然咱们要阅读容器类的jdk源码,固然得从Collection开始,他是大部分容器类的父接口,里面只有函数声明,声明了一组Collection类型容器的操做方法,可是没有实现,等其子类去实现。其代码以下(基于jdk1.6):数组

 

 

package java.util;



public interface Collection<E> extends Iterable<E> {
    
    //返回容器中元素的个数 
    int size();

    //若是集合元素为空,返回true,不然false
    boolean isEmpty();
  
	//若是集合包含这个元素,返回true,不然false,若是元素类型和本集合不同,抛出ClassCastException异常,若是元素null,而集合不容许为null,则抛出NullPointerException     
    boolean contains(Object o);

	//返回集合类的迭代器,能够用来遍历容器中的元素     
    Iterator<E> iterator();

 
	//将该集合转换为数组     
    Object[] toArray();

    
	//将集合类转换为更为具体类型的数组   
    <T> T[] toArray(T[] a);

   
	//将元素添加到容器,成功返回true   
    boolean add(E e);

  
	//从容器中删除元素,成功返回true
    boolean remove(Object o);


    //大块操做

   
	//若是容器包含c容器里面的全部元素,则返回true     
    boolean containsAll(Collection<?> c);

    
	//添加一个集合他容器中
    boolean addAll(Collection<? extends E> c);

    
	//删除集合中所包含的c集合里面的元素,相似求交集  
    
    boolean removeAll(Collection<?> c);

   
	//容器中只留下和c集合里面相同的元素,c集合的内容不变,变的是本身    
    boolean retainAll(Collection<?> c);

 
	//移除容器中全部的元素  
    void clear();


    // Comparison and hashing

    
	//指定的对象与本集合进行比较,判断相等性    
    boolean equals(Object o);

    
	//返回这个集合的hash code
    int hashCode();
}

 

能够看的出Collection继承了Iterable接口,而Iterable接口的内容以下:函数

取迭代器接口类code

public interface Iterable<T> {

    /**
     * 返回一个在类型T的元素集合上的迭代器。
     * 
     * @return an Iterator.
     */
    Iterator<T> iterator();
}

因此之后只要你建立了实现该Iterable的类,就能够用foreach语句来遍历了,因此全部的继承Collection均可以用foreach语句来遍历了。对象

迭代器接口类继承

public interface Iterator<E> {
    //判断是否还有元素  
    boolean hasNext();

    //返回下一个元素
    E next();

    //删除元素
    void remove();
}
相关文章
相关标签/搜索