Collection

首先来看下Collection接口的层次结构,参考JDK1.8

                       

现在来分析一下Collection接口的JDK源码:

public interface Collection<E> extends Iterable<E> {

    //返回集合中元素的数量,如果这个集合中的元素数量大于Integer.MAX_VALUE,则返回Integer.MAX_VALUE。

    int size();

    //如果集合为空集合(不包含任何元素),则返回true;若至少包含一个元素,则返回false。

    boolean isEmpty();

    //如何集合中包含指定的元素,则返回true;否则返回false。

    //更确切的说,当且仅当集合中至少包含一个满足(o == null? e == null : o.equals(e))的元素e时返回true。

    //可以重写E的equals方法,来指定在何种情况下两个E对象是equals相等的。

    boolean contains(Object o);

    //返回在此集合的元素上进行迭代的迭代器。关于元素返回的顺序没有任何保证(除非此集合是某个能提供保证顺序的类实例)。

    Iterator<E> iterator();

    //按适当顺序返回一个包含此集合中所有元素的数组,如何此集合对其迭代器返回的元素顺序做出了某些保证,那么此方法必须以相同的顺序返回这些元素。

    //返回的数组将是安全的?因为此集合并不维护对返回数组的任何引用,因此调用者可以随意修改返回的数组。

    Object[] toArray();

    //返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。如果指定的数组能容纳该 collection,则返回包含此

   //collection 元素的数组。否则,将分配一个具有指定数组的运行时类型和此 collection 大小的新数组。如果指定的数组能容纳 collection,并有剩余空间(即数组的元素比 collection 的元素多),那么会将数组中紧接 collection 尾部的元素设置为null。(只有在调用者知道此 collection 没有包含任何null元素时才能用此方法确定 collection 的长度。)

如果此 collection 对其迭代器返回的元素顺序做出了某些保证,那么此方法必须以相同的顺序返回这些元素。

像toArray()方法一样,此方法充当基于数组的 API 与基于 collection 的 API 之间的桥梁。更进一步说,此方法允许对输出数组的运行时类型进行精确控制,并且在某些情况下,可以用来节省分配开销。

 

    <T> T[] toArray(T[] a);

    //

    boolean add(E e);

    //

    

}

 

posted @ 2018-05-10 12:51  #hanw  阅读(186)  评论(0编辑  收藏  举报