Collection

Collection Framework成员如下

  1. Collection
  2. Set
  3. List
  4. Map
  5. SortedSet
  6. SortedMap
  7. HashSet
  8. TreeSet
  9. ArrayList
  10. LinkedList
  11. Vector
  12. Collections
  13. Arrays
  14. AbstractCollection
Collection.png
public interface Collection<E> extends Iterable<E> {
    // 查询操作

    /**
     * 返回集合中的元素个数。如果集合中元素的个数超过Integer.MAX_VALUE
     * 个,则返回Integer.MAX_VALUE
     */
    int size();

    /**
     * 判断集合是否包含元素
     */
    boolean isEmpty();

    /**
     * 判断集合是否包含指定的值
     */
    boolean contains(Object o);

    /**
     * 返回集合中元素的迭代器。不保证元素的顺序(除非这个集合提供了这个保证)
     */
    Iterator<E> iterator();

    /**
     * 返回包含集合元素的数组。如果集合本身有顺序保证,那么数组也会
     * 处于同样的顺序。
     * 返回的数组处于“安全”状态,因为原来的集合中没有对它维护任何应用。
     * 换句话说,这个方法必须分配一个新的数组,即使这个集合是由一个数组
     * 来进行存储的。
     */
    Object[] toArray();

  
    /*
     *    String[] y = x.toArray(new String[0]);</pre>
     *    toArray(new Object[0])和toArray()功能相同
     */
    <T> T[] toArray(T[] a);

    // 修改操作

    /**
     * 确保集合包含指定的元素(可选操作)。
     * 如果返回ture,意味着调用后集合发生了改变
     * 如果返回false,意味着集合不允许重复并且已经包含了已指定的值。
     *
     * 集合通过支持这种操作为添加元素增加一些限制。
     * 某些集合不允许添加null值,还有一些对添加的数据类型有要求。
     */
    boolean add(E e);

    /**
     * 如果指定的元素在集合中存在,则从集合中删除该元素。
     */
    boolean remove(Object o);


    // 批量操作

    /**
     * 如果集合包含指定的集合中的所有元素,则返回true
     */
    boolean containsAll(Collection<?> c);

    /**
     * 将指定的集合中的所有的元素添加进当前集合
     */
    boolean addAll(Collection<? extends E> c);

    /**
     * 删除集合中与指定集合相同的元素。
     */
    boolean removeAll(Collection<?> c);

    /**
     * 删除满足传入的函数表达式的集合中的元素
     */
    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();


    // Comparison and hashing

    /**
     * 指定集合与该集合做比较是否相等
     * list与set是不相等的
     */
    boolean equals(Object o);

    /**
     * 返回集合的hashcode
     */
    int hashCode();

    /**
     * 多线程并行的迭代器
     */
    @Override
    default Spliterator<E> spliterator() {
        return Spliterators.spliterator(this, 0);
    }

    /**
     * 
     */
    default Stream<E> stream() {
        return StreamSupport.stream(spliterator(), false);
    }

    /**
     * 并行的stream
     */
    default Stream<E> parallelStream() {
        return StreamSupport.stream(spliterator(), true);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java 集合类是一种特别有用的工具类,大致可分为Set、List、Queue、Map四种体系。 Set代表无序、...
    ifeelok0319阅读 318评论 0 0
  • 1.为什么要有集合 世间上本来没有集合,但有人想要,所以有了集合有人想有可以自动扩展的数组,所以有了List有的人...
    心有猛虎细嗅蔷薇_60d8阅读 460评论 1 1
  • 集合框架体系概述 为什么出现集合类?方便多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方法. 数组...
    acc8226阅读 823评论 0 1
  • 集合类简介 为什么出现集合类?面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就要对对象进...
    阿敏其人阅读 1,464评论 0 7
  • Scala的集合类可以从三个维度进行切分: 可变与不可变集合(Immutable and mutable coll...
    时待吾阅读 5,881评论 0 4