集合

Posted 白嫩豆腐

tags:

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

根据需求一共有这么几种东东:
List
Map
Set
Dictionary
Queue

List这个用的最多,就是一个有序的列表
Map key-value 对
set 无序列表
Dictionary 完全可以被Map替代
Queue 队列

实现

所有的实现都是基于数组或者链表实现的,或者数组+链表 链表+数组
链表插入删除速度快,数组查询快省内存

List包含子类有:
AbstractList

注意这里会有一些东西写的比较奇怪,比如AbstractList继承自AbstractCollection,实现了List接口,
并且list还实现了Collection的接口。这是因为java不支持多继承。代码想让List是接口,而不是抽象类。
这里只是为了代码复用罢了

这里我们大概可以这么理解,AbstractList这个就是为list的实现提供了部分的必要函数,其实没啥乱用,关键还是那个遍历器。
下面我们分析一下所有的实现类
ArrayList 就是一个数组,需要时候扩容,插入需要复制后面的部分。

RandomAccess 这是仅仅是接口,只是用来查询时候,方式不同

LinkedList 这是通过链表实现的,顺手实现了Queue接口。

Vector 这个就是一个线程安全的ArrayList.没什么可以说的

Stack 继承自 Vector 原理一个毛样。多了栈的一些方法

进入核心map

HashMap 数组+链表

TreeMap 二叉树

Hashtable 线程安全的HashMap

SortedMap

下面关注一下set。

set是无序的,看下实现

HashSet 这个是HashMap来存贮的

TreeSet 就是TreeMap实现的。

LinkedHashSet 他就是HashSet 的子类,貌似只在查找时候才不一样

所以set基本就是其他的封装。

以上是关于集合的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin集合操作总结 ( List 集合 | MutableList 集合 | List 集合遍历 | Set 集合 | MutableSet 集合 | Map 集合 | 可变 Map集合 )

怎样判断哪个集合属于哪个集合

数学分析集合 ① ( 集合概念 | 集合表示 | 常用的数集合 | 集合的表示 )

数学分析集合 ① ( 集合概念 | 集合表示 | 常用的数集合 | 集合的表示 )

Groovymap 集合 ( map 集合遍历 | 使用 map 集合的 each 方法遍历 map 集合 | 代码示例 )

Groovy集合声明与访问 ( 使用 [] 创建 ArrayList 和 LinkedList 集合 | 集合赋初值 | 使用下标访问集合 | 使用 IntRange 作为下标访问集合 )