原文链接:(7条消息) 吃透Java集合_吃透Java-CSDN博客
吃透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 }