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);
        }
    }
  • 相关阅读:
    Trapping Rain Water
    Construct Binary Tree from Preorder and Inorder Traversal
    Flatten Binary Tree to Linked List
    Permutations II
    Unique Paths II
    Path Sum II
    Unique Binary Search Trees II
    evdev module-----uinput.py
    evdev module-----events.py
    evdev module-----device.py
  • 原文地址:https://www.cnblogs.com/wanhua-wu/p/6652901.html
Copyright © 2011-2022 走看看