常用集合类数据结构(持续更新中)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用集合类数据结构(持续更新中)相关的知识,希望对你有一定的参考价值。
零、约定
1、 如果没有特殊说明,均指jdk 6,7,8一样
2、 源码分析出来的,有错误,请务必告知,谢谢
一、链表
1、 ArrayList<>()
a) 基本介绍
i. 动态数组的数据结构
ii.新增时,容量超过当前容量,会新new一个数组
iii. 随机查询忧,添加删除劣
b) 常用构造函数
i. ArrayList()
- jdk6初始化为容量10的数组
- jdk7,8初始化为容量为0的数组(EMPTY_ELEMENTDATA)
ii. ArrayList(int initialCapacity)
- jdk6,7初始化为initialCapacity长度的数组
- jdk8中当initialCapacity为0时,直接赋值为EMPTY_ELEMENTDATA(空数组)
- initialCapacity 为负数抛出IllegalArgumentException错误
iii. ArrayList(Collection<? extends E> c)
- jdk6,7均初始化为c.toArray()
- jdk8如果c的size为空,直接赋值为EMPTY_ELEMENTDATA(空数组)
c) 常用方法
i. add(E e)
- 在数组末端插入
- 如果当前容量不够,jdk1..6扩容(1.5倍+1),jdk7,8扩容三倍
- jdk理论无上限,jdk7,8最大容量Integer.MAX_VALUE
ii. add(int index, E element)
- 在指定数组下标插入数据,如果容量不够,则new新数组,扩容规则同add(e)
iii. remove(int index)
- 移除指定下标的数据,并将末尾置为NULL
2、 LinkedList
a) 基本介绍
i. 基于链表的数据结构
ii. 增删性能优于ArrayList,随机查询劣
b) 常用构造函数
i. LinkedList()
- jdk1.6初始化头结点的next和previous均指向自身
- jdk7,8不错任何操作
ii. LinkedList(Collection<? extends E> c)
- 均最终调用addAll(int index, Collection<? extends E> c)方法,index=size
- jdk7,8会记录第一个节点&最后个节点
c) 常用方法
以上是关于常用集合类数据结构(持续更新中)的主要内容,如果未能解决你的问题,请参考以下文章
安卓开发常用工具类整理,楼主亲测可用贴(持续更新),如有补充欢迎跟帖