2Java集合之Collection接口

本文深入解析Java集合框架,包括Collection、List、Set接口及其抽象类,如AbstractCollection、AbstractList和AbstractSet,同时探讨Iterator和ListIterator接口的使用,帮助读者理解集合类的内部结构和工作原理。

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

目录

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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值