2Java集合之Collection接口

目录

Collection接口:

List接口

Set接口

AbstractCollection抽象类

AbstractList抽象类

AbstractSet抽象类

Iterator接口

ListIterator接口


首先看一下Collection接口:分为List和Set接口,其中List和Set也分别有各自的实现类(抽象类),而且Collection也有一个抽象类,它实现了Collection接口中的绝大多数方法,避免了编码的重复。

Collection接口中有一个iterator方法,用来返回一个Iterator接口,我们使用Iterator迭代器来遍历集合,ListIterator是List接口所特有的,在List接口中用于返回一个ListIterator对象。

Collection接口:

public interface Collection<E> extends Iterable<E> 

注意:所有实现Collection的子类都必须有两个构造方法,一个是无参构造,一个是参数为Collection的构造,可以用来转换Collection的类型。

List接口

public interface List<E> extends Collection<E> 

List是一个实现了Collection的接口,是一个有序的集合,在API实现上,有处理Collection接口的其他实现。其中第一个元素的索引值是0,与Set集合不同的是List可以存储重复元素。

Set接口

public interface Set<E> extends Collection<E>

同理,Set接口也是一个实现了Collection的接口,不过他是无序的,不允许存储重复元素。它的API与Collection接口是相同的。

AbstractCollection抽象类

public abstract class AbstractCollection<E> implements Collection<E> 

   public abstract Iterator<E> iterator();

    public abstract int size();

该抽象类实现了除iterator和size的方法,作用是方便其他类实现Collection,比如ArrayList,LinkedList,这些类想要实现Collection接口,通过继承AbstractList就已经实现了大部分的方法了。

AbstractList抽象类

public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> 

AbstractList是一个继承抽象类AbstractCollection并实现List接口的抽象类。它实现了除size和get之外的函数,并且他实现了List接口中的绝大多数方法,方便其他类实现List接口。

另外,和AbstractCollection相比,AbstractList抽象类中,实现了iterator()接口。

AbstractSet抽象类

public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E>

AbstractSet是一个继承了抽象类AbstractCollection并实现了Set接口的抽象类。由于Set接口的API与Collection接口的API一样,所以它实现了Set接口中的绝大部分方法,方便其他类继承List接口

Iterator接口

public interface Iterator<E>

Iterator是集合的迭代器,用于遍历集合中的元素。Iterator接口提供的API包括:

boolean hasNext();

E next();

default void remove();

default void remove();

注意:当Iterator遍历Collection集合的时候,会有一个fail-fast机制,即当某一个线程A通过Iterator去遍历某一个集合的内容的时候,如果集合中的内容被其他线程改变了,那么线程A访问集合的时候就会发生ConcurrentModificationException异常,产生fail-fast事件。

ListIterator接口

public interface ListIterator<E> extends Iterator<E> 

ListIterator是一个继承于Iterator接口的接口,是一个队列迭代器,专门用于遍历List,可以用于向前或者向后遍历,相比于Iterator接口,它新增了以下几种方法:

abstract void add(E object)

abstract boolean hasPrevious()

abstract int nextIndex()

abstract E previous()

abstract int previousIndex()

abstract void set(E object)

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值