原文链接:(7条消息) 吃透Java集合_吃透Java-CSDN博客

java基础_吃透Java集合

 

 java基础_吃透Java集合

 

 

 

吃透Java集合系列二:Collection与其子接口

一:Collection接口

Collection接口是集合层次的根接口,定义了集合的通用操作,所有集合都是在Collection基础上进行扩展的。
先看一下Collection的源码:

  1 /**
  2  * 集合层次结构中的根接口。一个集合代表一组对象,被称为元素。
  3  * 一些集合允许重复的元素,而有些则不允许。一些是有序的,另一些是无序的。
  4  * JDK没有提供这个接口的任何直接的实现:它提供更具体的子接口像 Set和 List实现。
  5  * 
  6  * 所有通用的Collection实现类(通常通过其子接口间接实现Collection)应该提供两个“标准”构造函数:
  7  * void(无参数) 构造函数,它创建一个空集合,以及一个带有Collection类型的单个参数的构造函数,
  8  * 它创建一个与它的参数具有相同元素的新集合。实际上,后者的构造函数允许用户复制任何集合,生成所需实现类型的等效集合。
  9  * 没有办法强制执行这个约定(因为接口不能包含构造函数),但是Java平台库中的所有通用Collection实现都符合。
 10  * 
 11  * 如果这个集合不支持某个操作的话,调用这些方法可能(但不是必需)抛出 UnsupportedOperationException 
 12  */
 13 
 14 public interface Collection<E> extends Iterable<E> {
 15 
 16     /**
 17     * 此方法成功完成后,可确保对象包含在集合中。
 18     * 如果集合被修改,则返回true,如果没有更改,则返回false。
 19     */
 20     boolean add(E e)
 21 
 22     /**
 23     * 将指定集合中的所有元素添加到这个集合
 24     */
 25     boolean addAll(Collection<? extends E> c)
 26 
 27     /**
 28     * 从这个集合中移除指定元素的一个实例
 29     */
 30     boolean remove(Object o)
 31 
 32     /**
 33     * 删除此集合中包含的所有元素的所有元素。
 34     */
 35     boolean removeAll(Collection<?> c)
 36     
 37     /**
 38     * 删除满足给定谓词的这个集合的所有元素。
 39     */
 40     default boolean removeIf(Predicate<? super E> filter) {
 41         Objects.requireNonNull(filter);
 42         boolean removed = false;
 43         final Iterator<E> each = iterator();
 44         while (each.hasNext()) {
 45             if (filter.test(each.next())) {
 46                 each.remove();
 47                 removed = true;
 48             }
 49         }
 50         return removed;
 51     }
 52 
 53     /**
 54     * 从这个集合中移除所有不包含在指定集合中的元素的所有元素。
 55     */
 56     boolean retainAll(Collection<?> c)
 57     
 58     /**
 59     * 从这个集合中移除所有的元素
 60     */
 61     void clear()
 62 
 63     /**
 64     * 返回此集合中的元素的数目。如果这个集合包含多 Integer.MAX_VALUE元素,返回 Integer.MAX_VALUE。
 65     */
 66     int size();
 67     
 68     /**
 69     * 如果此Collection不包含元素,则返回true
 70     */
 71     boolean isEmpty()
 72    
 73     /**
 74     * 如果集合包含指定元素,返回 true。
 75     */
 76     boolean contains(Object o)
 77 
 78     /**
 79     * 返回 true如果这个集合包含指定集合的所有元素。
 80     */
 81     boolean containsAll(Collection<?> c)
 82     
 83     /**
 84     * 返回一个包含此集合中包含的所有元素的新数组。
 85     * 如果实现已经排序了元素,它将以与迭代器返回的顺序相同的顺序返回元素数组。
 86     * 返回的数组不反映集合的任何更改。 即使底层数据结构已经是一个数组,也创建一个新数组。
 87     */
 88     Object[] toArray()
 89     
 90     /**
 91     * 返回包含此集合中包含的所有元素的数组。 如果指定的数组足够大以容纳元素,则使用指定的数组
 92     * 否则将创建相同类型的数组。 如果使用指定的数组并且大于此集合,则Collection元素之后的数组元素将设置为null。
 93     */
 94     <T> T[] toArray(T[] a)
 95    
 96     /**
 97     * 重写Object中的equals方法
 98     */
 99     boolean equals(Object o)
100     
101     /**
102     * 重写Object中的hashCode方法
103     */
104     int hashCode()
105     
106     /**
107     * 返回可用于访问此Collection所包含的对象的Iterator实例。 没有定义迭代器返回元素的顺序。
108     * 只有当Collection的实例具有定义的顺序时,才能按照该顺序返回元素。
109     */
110     Iterator<E> iterator()
111     
112     /**
113     * 返回一个并行迭代器类Spliterator
114     */
115     default Spliterator<E> spliterator() {
116         return Spliterators.spliterator(this, 0);
117     }
118     
119     /**
120     * 这个集合中的元素的顺序 Stream
121     */
122     default Stream<E> stream() {
123         return StreamSupport.stream(spliterator(), false);
124     }
125     
126     /**
127     * 返回一个可能并行 Stream与集合的来源。
128     */
129     default Stream<E> parallelStream() {
130         return StreamSupport.stream(spliterator(), true);
131     }
View Code

相关文章: