zoukankan      html  css  js  c++  java
  • 【JDK】JDK源码分析-Collection

    Java 集合框架(Java Collections Framework, JCF)包含很多平时开发中的常用类,例如 List、Set、ArrayList、HashMap、HashSet 等,因此打算先从这里下手。

    而 Collection 接口又是集合层次中的根接口,最常用的 List 和 Set  接口都继承自它。它们的继承结构如下(常用部分):

    Collection 接口的方法描述如下:

    很多方法都能见名知意,这里简要分析一下:

    1. size(): 集合中包含的元素个数;

    2. isEmpty(): 集合是否为空;

    3. contains(Object): 集合中是否包含某个对象;

    4. iterator(): 返回该集合的迭代器,用于(顺序)遍历该集合;

    5.1 Object[] toArray(): 将集合中的元素“拷贝”到一个 Object 数组中;

    5.2 T[] toArray(T[] a): 作用同 5.1,区别在于该方法可以指定数组的类型(这两个方法用于集合与数组之间的转换);

    6. add(E): 添加元素;

    7. remove(Object): 移除元素;

    8. containsAll(Collection<?>): 判断该集合是否包含另一个集合;

    9. addAll(Collection<? extends E>): 将另一个集合的所有元素都添加到该集合中;

    10. removeAll(Collection<?>): 从该集合中移除指定集合的所有元素;

    11. removeIf(Predicate<? super E>): 从该集合中移除满足指定条件的元素,其中 Predicate 是 JDK 1.8 引入的函数式操作,即传入的参数是一个方法;

    12. retainAll(Collection<?>): 保留指定集合中的元素,即移除所有未包含在指定集合中的元素;

    13. clear(): 清空集合;

    14. equals(Object): 比较该集合与指定的对象是否相等;

    15. hashCode(): 返回该集合的哈希值,注意重写 equals 方法时必须要重写该方法,以满足 Object.hashCode 方法的规定。

    16. spliterator(): 可分割迭代器,用于并行遍历集合中的元素(iterator() 方法是顺序遍历);

    17. stream() & parallelStream(): JDK 1.8 引入的流(Stream)式数据处理,分别表示串行流和并行流,该部分以后单独分析。

    此外,还有一个继承自 Iterable 接口的 forEach(Consumer<? super T>) 方法,该方法也是 JDK 1.8 引入的,提供遍历集合元素的函数式操作。

    PS: JDK 版本如下

    阅读源码时,个人以为应该先读接口类,而非具体的实现类。原因有二:

    1. 接口类本身就有协议或标准的性质,至于它的多个实现类,都是对该标准的详细实现。因此,如果熟悉了「标准」,再去研究其实现类会更容易理解。

    2. 从代码量看,接口类代码较少。实现类的代码一般较多,如果初读源码就钻到实现类,可能容易被搞蒙。

    Stay hungry, stay foolish.

    PS: 本文首发于微信公众号。

  • 相关阅读:
    centos7.6 安装与配置 MongoDB yum方式
    MongoDB 介绍
    centos 关闭selinux
    前端 HTML标签属性
    前端 HTML 标签嵌套规则
    前端 HTML 标签分类
    前端 HTML body标签相关内容 常用标签 表单标签 form里面的 input标签介绍
    前端 HTML body标签相关内容 常用标签 表单标签 form 表单控件分类
    前端 HTML form表单标签 select标签 option 下拉框
    POJ 1426
  • 原文地址:https://www.cnblogs.com/jaxer/p/11105412.html
Copyright © 2011-2022 走看看