java集合系列二:Collection

你应该先阅读java集合系列一:前传

Collection的继承关系如下:
在这里插入图片描述

Collection

  • 集合层次的根接口,对集合一些常用方法的高度抽象,此接口通常用于需要最大通用性的情况下实现,但是JDK并没有提供此接口的任何直接实现,它提供了更具体的子接口如Set和List实现!
  • Collection接口是list和set的顶级接口,其抽象了一些常用的公共方法,实现了Iterable接口,实现该接口以保证子类可以获取集合中元素的迭代器已进行遍历,验证了list和set系列集合是可以使用迭代器遍历的

AbstractCollection

AbstractCollection此抽象类包含一些List和Set的公共实现(实际上还有一些我们不常用的对象也实现它 这里就不管了),通过实现它可以省去部分重复的编码,此外它将iterator和size声明为Abstract让子类来实现

Set

  • Set是不包含重复元素的集合(如何做到的?后续写到具体的集合再详细说),Set实现了Collection,它也是一个接口,没有添加任何新的方法,和Collection是一致的
  • 为什么一致还要创建Set呢?Collection是Set和List的顶层抽象,而Set接口和List接口分别是set集合和list集合的顶层,通过在Set接口和List接口中添加一些特有的方法可以更好的方便调用者使用集合,比如下面看下List集合它就添加了list的特有方法,而这些List特有方法很明显不适合放在Collection中,因为这违背了迪米特原则

List

  • List是有序集合,实现List接口的集合可以精确控制列表中的每一个元素的插入位置,可以通过索引访问元素

  • 允许重复元素

  • List接口提供了一个特殊的迭代器ListIterator,这个不详细说了不知道的百度并发修改异常!通过ListIterator在遍历中允许元素插入和替换

  • List提供了精准的add和remove方法,如下:

    void add(int index, E element);
    E remove(int index);

通过add方法可以将元素添加到指定位置,通过remove方法可以删除指令位置的元素,从性能的角度来说我们在使用中要谨慎对待这两个方法,原因是不管是添加还是删除,原位置所有的元素都需要前移或后移,举个例子?现在A集合中有1,2,3,4,5个元素,现在add(0,6),往0的位置添加一个数据6那么后续的1,2,3,4,5都需要后移,同样如果remove(0),2,3,4,5都需要前移,数据量大的时候注意

AbstractSet

此抽象类继承了AbstractCollection,实现了Set接口,最大程度减少了直接实现Set接口的工作量,AbstractSet中并没有覆盖AbstractCollection的任何实现,它只是添加了equals和hashCode和removeAll的实现

AbstractList

此抽象类继承了AbstractCollection,实现了List接口,它实现了List中绝大部分函数,底层集合实现该类可以简化更多工作量

ListIterator

List集合特有的迭代器,允许在任意方向上遍历列表,在迭代期间修改元素不会触发fail-fast机制

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值