以下内容参考《代码随想录知识星球精华(最强⼋股⽂)第三版》整理。
Collection继承关系图
(该图基于JDK8,仅包含部分类。为了方便查看,部分关系未画出)

Collection接口

- Collection下的所有实现类都是继承⾃AbstractCollection,该类将基础⽅法 size 和 iterator 抽象化,但是实现了其他的⽅法
- AbstractCollection下派⽣出AbstractList、AbstractSet、AbstractQueue、ArrayQueue
- List下的全部继承⾃AbstractList,List是一个存储有序的集合,允许重复,每个元素都有一个索引
- Set下的继承⾃AbstractSet,Set是一个无需存储的集合,不允许重复
Java中经常使⽤的语法糖”for each”循环可以与任何实现了Iterable接⼝的对象⼀起⼯作。
Collection通过调用iterator()⽅法返回⼀个Iterator对象,这就是常⽤的迭代器,其中包含hasNext()、next()、remove()、forEachRemaining(Consumer)4个⽅法。
Iterator()的功能简单,只能单向移动:
- 调⽤iterator()⽅法返回⼀个Iterator对象
- 第⼀次调⽤Iterator的next()⽅法,返回序列的第⼀个元素。此后每调⽤⼀个next(),会返回序列的下⼀个元素。调⽤next()⽅法前最好先调⽤hasNext()⽅法,判断序列后⾯是否还有元素
- remove()删除上次next()返回的对象,remove()只能在next()之后使⽤,并且⼀个remove()匹配⼀个next(),不能重复调⽤
- 使⽤hasNext()判断序列中是否还有元素
List接口

- List接⼝常⽤的实现类有ArrayList、LinkedList
- 相比Collection,List多出sort()、get()、listIterator()等⽅法,listIterator返回⼀个链表迭代器
List有着特殊的迭代器接口ListIterator,该接口继承自Iterator接⼝。ListIterator是⼀个功能更加强⼤的迭代器,Iterator是单向的,但ListIterator是双向的,ListIterator增加了previous()和hasPrevious()⽅法⽤来反向遍历。注意只能List使⽤ListIterator。

Set接口

- Set常⽤的实现类有HashSet、TreeSet、LinkedHashSet
Queue接口


- Deque接⼝继承⾃Queue,在Deque的基础上更加细化,可以选择从头部或者尾部操作。如果Deque中使⽤Queue的⽅法,⼀定要清楚实现类是从头部还是尾部操作的
- 很多实现类既实现类List接⼝,⼜实现类Queue接⼝,如LinkedList即实现了List接口又实现了Deque接口(因此LinkedList即可以使用add又可以使用addLast)
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至header-files@foxmail.com。