JDK源码阅读笔记1 Collection

collection是一个接口

Collection是所有java中“一组对象”,或者说集合都实现的接口,其父接口是Iterable。Collection的实现类有的可以容纳重复数据如LinkList, 有的不可如Bag,有的有序有的无序。但他们都不是直接实现了Collection而是实现了其子接口,如下图LinkedList就是实现了List和Queue(Deque)等接口。

在这里插入图片描述

两个构造器 无参和有参

一般来讲,Collection的实现类均应实现两个“标准”构造器。接口无法对实现类的构造器做出限制,实际上也是可以不实现的,不过JDK中的Collection实现类均对其实现(个人理解这算是JDK的一种编码规范吧)。见下图的LinkedList。

无参构造器返回一个空的Collection

有参构造器的参数是另一个Collection ,完成的功能是从一种Collection转化为另一种Collection
在这里插入图片描述

UnsupportedOperationException

当对Collection进行一些非法操作时,一般会throw UnsupportedOperationException,但也不是必须实现的。

下图是AbstractList抛出的UnsupportedOperationException

在这里插入图片描述

对象的约束

Collection的实现类一般对其内容会有约束,最常见的就是非空和类型约束了。如LinkedList的tryAdvance方法就会抛出NullPointerException

在这里插入图片描述

线程同步规定

Collection接口并未对线程策略进行规定,所以如果在实现类中处理不好,将会引起一些奇怪的问题

广泛使用Object.equals()

Collection的实现类经常使用Object.equals()来实现一些功能,同时也可以不使用equals方法来进行一些优化。

实现要求

Collection的实现类不允许实现任何的同步协议,如果必须使用的话需重写。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值