zoukankan      html  css  js  c++  java
  • JAVA-容器(2)-Collection

    (基于JDK1.8源码分析)

    一,Collection

      所有实现Collection接口的类原则上应该提供两种构造函数:

      【1】无参构造-创建一个空的容器

      【2】有参构造-创建一个新的Collection,这个新的Collection和传入的Collection具有相同的元素

    二,源码分析

      

    public interface Collection<E> extends Iterable<E> {
    
        /** 集合大小 */
        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);
        /** 集合中是否包含C集合中的元素*/
        boolean containsAll(Collection<?> c);
        /** 新增集合元素*/
        boolean addAll(Collection<? extends E> c);
        /** 集合中删除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;
        }
    
        /** 集合中只保留C集合中的元素*/
        boolean retainAll(Collection<?> c);
        /** 清空集合元素*/
        void clear();
       /** 比较集合元素是否相同*/
        boolean equals(Object o);
        /** 计算哈希码*/
        int hashCode();
    
        /***/
        @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);
        }
    }
  • 相关阅读:
    csuOJ啊 1553
    Codeforces 111B【看看自己和别人在代码能力上的差距!】
    hdu1849
    hdu 1847
    校队训练赛,同时也是HDU4497(数论:素数分解+组合数学)
    POJ 2356 (抽屉原理)
    线段树总结一【转】
    训练赛(1---5)D
    训练赛(1---5)A
    HDU1556 【树状数组】(改段求点)
  • 原文地址:https://www.cnblogs.com/wanhua-wu/p/6652901.html
Copyright © 2011-2022 走看看