java 容器继承关系_Java基础之有容乃大篇(容器篇 - 继承关系)

本文介绍了Java容器的分类,包括List、Set和Map,并详细阐述了它们的继承关系。List接口有Queue和Deque子接口,Set接口有HashSet、LinkedHashSet和TreeSet实现类。Map接口的实现类如HashMap、TreeMap等。文章还提到了AbstractCollection等抽象类的作用,以及Iterable接口的重要性。
摘要由CSDN通过智能技术生成

JAVA容器

咱们学习容器的时候用最原始的分析方式java

1. 有啥没啥 ,数组

2. 啥是啥 ,

数据结构

3. 啥能干啥,学习

4. 啥和啥有啥关系spa

这里再容器的介绍这一篇文章主要讲的是有啥没啥.net

java容器能够分为三类:

1.List    线性表,在数据结构中,线性表有两种实现方式,一种是数组实现,另外一种是用链表来实现

code

2.Set    一个没有重复元素的集合,集合中元素没有顺序,能够存在空值。

对象

3.Map   键值对的集合,一个键对应一个value,存取速度很快。blog

java容器List、Set的继承关系图:继承

083f058a2007ffb99e378be6434b0b9a.png

介绍一下接口和超类:

先介绍接口:

Iterable接口,容器中的顶级接口,接口中规定了一个迭代方法,iterator。

Collection接口,继承了Iterable的iterator方法,扩展了一些集合经常使用的方法,好比add,size,isEmpty,contains等集合

经常使用的方法,定义了集合最基本的方法。

List接口,继承了Collection,在集合的基础上特化出线性表的概念,定义了线性表经常使用的一些方法,get/set,add指定位置添

加,indexOf,lastIndexOf等方法。

咱们都知道,线性表延伸出队列和栈:

1.队列Queue接口,继承了List,定义了队列的经常使用方法,offer,poll,peak等方法。

Deque接口是Queue接口的子接口,表明一个双端队列。同时Deque不只能够做为双端队列使用,并且能够被当成栈来

使用,因此可使用出栈,入栈的方法。

2.栈这里上图中没有画到栈的图,是由于咱们围绕ArrayList和linkedList,HashSet,HashMap等经常使用集合来说,简单说下

栈,栈继承了Vector,Vector继承了AbstractList超类。Vector是一个底层为数组实现的集合,平时咱们不是很经常使用。

Set接口,继承了Collection,扩展了添加元素的方法,查找元素的方法,迭代方法和删除方法,方法不是不少。

Set主要有三个实现类:

1.HashSet        无序

2.LinkedHashSet        有序

3.TreeSet        有序

上面就画了两个,linkedHashSet我不常常用,因此也就没画。至于TreeSet继承NavigableSet,NavigableSet继承Sort

edSet,SortedSet定义了有序Set的方法,在SortedSet中元素必定是有序的,目前我知道的也只有TreeSet继承他。

NavigableSet扩展了 SortedSet,具备了为给定搜索目标报告最接近匹配项的导航方法。方法 lower、floor、ceiling             和higher 分别返回小于、小于等于、大于等于、大于给定元素的元素,若是不存在这样的元素,则返回 null。

介绍超类:

上面的图超类主要有AbstractCollection,AbstractList,AbstractSet,AbstrackSequentialList。按照目前个人段位来理

解,超类对超类所实现的接口进行了一些具体化的实现方式,也有一些方法是留给子类去实现的。超类有不少咱们拿出一个

来说,AbstractCollection,它实现了一些方法,也定义了几个抽象方法留给子类实现,所以它是一个抽象类。

它有两个抽象方法

public abstract Iterator iterator();

public abstract int size();

这两个方法须要本身去是实现。他的add方法是这样的。

public boolean add(E object) {

throw new UnsupportedOperationException();

}

若是子类是一个能够添加元素的集合,必须重写add方法。保证集合是能够添加元素的。

剩下的一些方法AbstractCollection超类本身就实现了,另外它还重写了toString方法,这也是咱们为何能输出集合中元素的缘由。

java容器Map继承关系图:

0a1747f3aa985f80179a099605d13986.png

Map接口定义了源于Map的全部基本操做。

Dictionary 类是一个抽象类,用来存储键/值对,做用和Map类类似。给出键和值,你就能够将值存储在Dictionary对象中。一旦该值被存储,就能够经过它的键来获取它。因此和Map同样, Dictionary 也能够做为一个键/值对列表。

AbstractMap 是 Map 接口的的实现类之一,也是 HashMap, TreeMap, ConcurrentHashMap 等类的父类。AbstractMap 提供了 Map 的基本实现,使得咱们之后要实现一个 Map 不用从头开始,只须要继承 AbstractMap, 而后按需求实现/重写对应方法便可。

AbstarctMap 中惟一的抽象方法:

public abstract Set> entrySet();

这里不详细的说明每个类接口具体的一些方法和实现,后续会一点一点的慢慢梳理。

java容器所有继承关系图:

0010fe24461590a05be0658f40607213.png

这里关于concrrent包里面的集合类暂时不去考虑,后续会一点一点的补充进来。

总之,咱们平时常用的集合继承关系已经说明清楚了,后续在个人博客中会慢慢对每个接口,超类,具体实现类作一个详细的叙述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值