前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JDK源码分析-Collection

JDK源码分析-Collection

作者头像
WriteOnRead
发布2019-08-16 17:00:44
4800
发布2019-08-16 17:00:44
举报
文章被收录于专栏:WriteOnReadWriteOnRead

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WriteOnRead 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档