java容器类的继承结构

Posted 乱蓬头199304

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java容器类的继承结构相关的知识,希望对你有一定的参考价值。

摘要: java容器类的继承结构

Java容器类库定义了两个不同概念的容器,Collection和Map

技术分享

(文中Jdk源码版本无特殊说明均为jdk1.8.0_101)

 public interface Collection<E> extends Iterable<E> {

可以看到,java定义了Collection接口和内部集合的基本操作方法,Collection默认可以进行对集合末端添加元素,删除指定元素等操作。List、Set、Queue接口都继承自Collection并定义了各自不同的方法。如果你想学习Java可以来这个群,首先是二二零,中间是一四二,最后是九零六,里面有大量的学习资料可以下载。

技术分享

 public interface Map<K,V> {

Map内部接口Entry<K,V>对应着Map的键值对。

具体介绍

迭代器

先介绍一下迭代器。迭代器本身也是一种设计模式,设计的初衷在于:容器的实现由很多种,而我们想对容器进行遍历操作的话,首先不应该关心容器实现的细节,其次遍历操作应该是轻量级的。迭代器统一了对容器的访问方式,同时创建它的代价很小。值得注意的是,Iterator只能单向移动。

 public interface Iterator<E> {

通过容器的iterator()方法拿到容器的迭代器

迭代器的next()获取下一个元素

hasNext()判断是否还有元素

remove()删除指定元素

ListIterator

ListIterator是Iterator的扩展之内,用于各种List类访问,支持双向移动。

Collection

List

List 承诺可以将元素维护在特定的序列中.List接口在Collection的基础上添加了大量的方法,使得可以再List中间插入和移除元素。

 public interface List<E> extends Collection<E> {

技术分享

有两种类型的List,ArrayList和LinkedList

List类型优点缺点底层实现
ArrayList 随机访问元素较快 中间元素的插入和删除较慢 数组
LinkedList 中间元素的插入和删除,顺序访问的优化 随机访问元素较慢 双向链表

Set

Set不保存重复的元素,通常用于快速查找元素。值得一提的是,Set具有与Collection完全一样的接口,没有任何额外的功能。 存入的元素必须定义equals()方法

Set类型使用场景底层实现
HashSet 快速查找,元素必须定义hashCode() 链表
TreeSet 保持次序,元素必须实现Comparable接口 红-黑树结构
LinkedHashSet 维护次序的HashSet, 元素必须定义hashCode() 链表

技术分享

Queue

除了并发应用,Queue仅有的两个实现是LinkedList和PriorityQueue, 其中LinkedList同时实现了List, Deque接口。它们的差异在于排序行为而不是性能。

技术分享???????

原文链接

以上是关于java容器类的继承结构的主要内容,如果未能解决你的问题,请参考以下文章

Java容器结构总结 ---讲了很多类的大致关联和继承关系 粗略讲了几个类

java 代码片段

Java类的根Object

java总结

Java 枚举类的基本使用

Java中怎样获取一个类的所有子类?