JDK8常用集合类自上而下的关系

在Java中,集合类主要分为4大部分:Queue、Map、List、Set.

1. 首先来看一下顶层接口Collection接口:
public interface Collection<E> extends Iterable<E> {

由上述代码可见,集合类的顶层接口Collection扩展了Iterable接口;

2. 在顶层接口的下一层为AbstractCollection虚类,虚类实现了Collection中的部分方法;
public abstract class AbstractCollection<E> implements Collection<E> {
3. Set、Queue、Map、List
3.1 List

List接口是list的顶层接口,List接口定义如下:

public interface List<E> extends Collection<E> 

由上可见,List接口扩展了Collection接口。

list集合的顶层类为AbstractList虚类:

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

由上可见,list顶层类AbstractList是一个虚类,AbstractList扩展了AbstractCollection类。

而我们常用的ArrayList、LinkedList都是扩展了AbstractList类:

//ArrayList类
public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable;

//LinkedList类没有直接继承AbstractList类,而是通过AbstractSequentialList类间接继承了AbstractListpublic class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializablepublic abstract class AbstractSequentialList<E> extends AbstractList<E> ;
3.2 Map

Map接口定义如下:

public interface Map<K,V> ;

由上可见Map接口并没有继承Collection接口;
Map接口的顶层类为AbstractMap,定义如下:

public abstract class AbstractMap<K,V> implements Map<K,V> ;

由上可见,AbstractMap为抽象类,没有继承AbstractCollection抽象类。
常用的HashMap以及ConcurrentHashMap的定义如下:

//HashMap的定义,可见HashMap继承了AbstractMap类。
public class HashMap<K,V> extends AbstractMap<K,V>
    implements Map<K,V>, Cloneable, Serializable;

//ConcurrentHashMap类的定义,可见ConcurrentHashMap同样继承了AbstractMappublic class ConcurrentHashMap<K,V> extends AbstractMap<K,V>
    implements ConcurrentMap<K,V>, Serializable {
3.3 Set

Set接口的定义如下:

public interface Set<E> extends Collection<E> ;

由上可见,Map接口继承了Collection接口;
Set接口的顶层类为AbstractSet抽象类,定义如下:

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

由上可见,AbstractSet继承了AbstractCollection类。
常用的HashSet、TreeSet类的定义如下:

//HashSet类的定义,可见HashSet继承了AbstractSet抽象类
public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, java.io.Serializable

//TreeSet类的定义,可见TreeSet继承了AbstractSet抽象类
public class TreeSet<E> extends AbstractSet<E>
    implements NavigableSet<E>, Cloneable, java.io.Serializable
3.4 Queue

Queue接口的定义如下:

public interface Queue<E> extends Collection<E> ;

由上可见,Queue接口继承了Collection接口;
Queue接口的顶层类为AbstractQueue抽象类,定义如下:

public abstract class AbstractQueue<E>
    extends AbstractCollection<E>
    implements Queue<E> {

由上可见,AbstractQueue抽象类继承了AbstractCollection类。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值