集合
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 作为下标访问集合 )