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);
        }
    }
  • 相关阅读:
    Python 3 Mysql 增删改查
    Python3 MySQL 数据库连接 -PyMySQL
    java 获取cookie
    Python 通过配置文件 读取参数,执行测试用例,生成测试报告并发送邮件
    Python 操作 Excel 、txt等文件
    SonarQube代码质量管理平台安装与使用
    Python + HTMLTestRunner + smtplib 完成测试报告生成及发送测试报告邮件
    Python 解析Xml文件
    GO语言基础
    FileBeat
  • 原文地址:https://www.cnblogs.com/wanhua-wu/p/6652901.html
Copyright © 2011-2022 走看看