Java(JDK1.9)集合框架归纳总结——集合框架图与两个顶级接口

本文是对Java集合框架的总结,主要关注JDK1.9的变动。介绍了Collection和Map的顶级接口,规范以及新添加的方法。Collection接口新增了如removeIf等默认方法,体现了对函数式编程的支持。Map接口引入了Map.Of()等方法,提供不可变地图创建,并强调了键值对的不可变性和限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:该系列文章总结自JDK1.9源码的文档注释和源码,我对源码的部分中文注释已经同步到Github:https://github.com/Dodozhou/JDK

Java Collections Framework概述

Java集合框架继承图:
JavaCollectionsFrameWord

Java集合框架由两个顶层接口衍生而出。这两个接口区别如下:

  • Collection:保存一维列表,有数组和链表两种形式。
  • Map:保存二维键值对,分为有序和无序两种形式。

顶级结构定义了该类型集合的基本操作方法,和需要遵循的规范。

Collection定义的规范

  • 所有通用的集合类(Collection子接口的实现类)都必须提供两个标准的构造器,一个是无参,另一个只包含一个Collection类型的参数,用来创建一个包含同样元素的新集合。由于接口不能有构造方法,所以该规范不能强制要求,但都应该遵守。
  • 并不是每个子类都要实现所有的方法,当子类执行不支持的操作,需要抛出UnsupportedOperationException。如对不可变集合执行addAll()方法。
  • 不同的实现对装入的元素有不同的要求,如有的允许null值,有的不允许。
  • 默认的方法实现并不支持同步,每个实现类的同步策略由自己决定。
  • 有些方法可能会因为持有自己的引用(self-referential)而导致递归遍历失败,如clone()、equals()、hashCode()、toString()
  • 集合框架接口的很多方法都是基于Object.equals()方法,如contains(obj)。但是具体实现可以自由地实施优化,从而避免了equals调用,例如,首先比较两个元素的散列码。更一般地,各种集合框架接口的实现可以自由地利用底层对象方法的指定行为,只要实现者认为合适。
新增加的方法

在JDK1.8中,Collection接口加入了一些新的默认方法,如

default boolean removeIf(Predicate<? super E> filter) {
        Objects.requireNonNull(filter);
        boolean removed = false;
        final Iterator<E> each = iterator();
        while (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值