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> { // 查询操作 /** * @return 此集合中的元素数 */ int size(); /** * 判断集合是否为空 */ boolean isEmpty(); /** * 判断此集合包含指定的元素。 */ 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); /** * 安全移除 * @since 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; } /** * 取交集方法retainAll *有两个集合newCoures和oldCourses,判断这两个集合是否包含相同的对象或元素 */ boolean retainAll(Collection<?> c); /** * 移除所有元素,使集合为空 */ void clear(); // 比较和求哈希 /** * 将指定对象与此集合进行比较以实现相等性。 */ boolean equals(Object o); /** *求集合的hashCode */ int hashCode(); /** *并行遍历 * * @return a {@code Spliterator} over the elements in this collection * @since 1.8 */ @Override default Spliterator<E> spliterator() { return Spliterators.spliterator(this, 0); } /** * https://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi/index.html * @since 1.8 */ default Stream<E> stream() { return StreamSupport.stream(spliterator(), false); } /** * https://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi/index.html * @since 1.8 */ default Stream<E> parallelStream() { return StreamSupport.stream(spliterator(), true); } }
原文地址:https://www.cnblogs.com/mayZhou/p/8809418.html
时间: 2024-11-13 07:55:40