rt.jar -> java.util
package java.util;
import java.util.function.Predicate;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
//集合根接口
public interface Collection<E> extends Iterable<E> {
//返回這個集合內元素的數量,如果數量超過Integer的最大值則返回Integer的最大值
int size();
boolean isEmpty();
//如果傳入的元素在這個集合中返回true
//如果傳入的元素不符合集合類型報ClassCastException類型轉換異常
//如果傳入的元素爲Null報NullPointerException空指針異常
boolean contains(Object o);
//返回一個迭代器
Iterator<E> iterator();
//返回包含此集合中所有元素的數組。
Object[] toArray();
//返回包含此集合中所有元素的數組,此外,這種方法允許精確控制輸出數組的運行時類型,
<T> T[] toArray(T[] a);
boolean add(E e);
boolean remove(Object o);
boolean containsAll(Collection<?> c);
boolean addAll(Collection<? extends E> c);
boolean removeAll(Collection<?> c);
//刪除該集合中滿足給定條件的所有元素。
//1.8新增方法,需要傳入一個函數式接口
//默認方法,不用子類重寫
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;
}
//僅保留該集合中包含的元素。
boolean retainAll(Collection<?> c);
//從這個集合中刪除所有元素(可選操作)。
void clear();
boolean equals(Object o);
int hashCode();
//Spliterator(splitable iterator可分割迭代器)接口是Java爲了並行遍歷數據源中的元素而設計的迭代器,
//這個可以類比最早Java提供的順序遍歷迭代器Iterator,但一個是順序遍歷,一個是並行遍歷
@Override
default Spliterator<E> spliterator() {
return Spliterators.spliterator(this, 0);
}
//返回一個支持順序和並行聚合的元素序列
default Stream<E> stream() {
return StreamSupport.stream(spliterator(), false);
}
//返回一個支持順序和並行聚合的元素序列
default Stream<E> parallelStream() {
return StreamSupport.stream(spliterator(), true);
}
}