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);
        }
    }
  • 相关阅读:
    webservice的几种调用方式
    捕获的异常到控制台的的信息转为String输出,在保存日志方面有用
    IO文件的读取与写入
    eclipse修改内存大小
    Oracle序列的创建与删除
    NFS挂载-实现文件共享
    arraylList.add(int,obj)的底层是怎么样的??
    Oracle修改表字段数据类型
    SVN版本库打包迁移备份恢复
    linux中tar详解
  • 原文地址:https://www.cnblogs.com/wanhua-wu/p/6652901.html
Copyright © 2011-2022 走看看