关于java常用数据类型的理解

1.ArrayList

它是实现了List接口的动态数组,与java中数组比较,它的容量可以动态增长。新长度=原长度+原长度/2

源码:pastingint newCapacity = oldCapacity + (oldCapacity >> 1);关于ArrayList的增删改查中,增加用add(e)比add(index,e)效率高,因为不需要移动其它元素位置。删除如果不是最后一个元素,一样会移动位置。因为底层是数组存储,所以查询是ArrayList的优势。三个特点:1采用数组结构2有序3非同步。

2.LinkedList

它的底层结构是双向列表,所以定义了一个内部类Node,本质上它就是这一堆节点的集合。查找通过node方法所以它不适合通过索引查找,但是在查找第一个和最后一个方面还可以。它因为结构是双向链表,所以可以当作队列和栈来用。offer进队poll出队,push压栈pop出栈。总结一下LinkedList性能,顺序访问效率高于随机访问,添加和删除节点尽量不要在中间,这样还是会随机访问。

3.HashMap

 

HashMap底层维护一个entry数组和entry链,一个entry链的所有entry对象hash(key)都相同。当要存入一个key-value的时候,是将其看成一个整体,hash这个key&上HashMap长度,算出存放位置,然后存放。取值的时候也是根据key算出位置然后取值。所以这个原理决定了HashMap的快速存取。

4.treeMap(基于红黑树实现的一种数据结构)

本文参照以下连接 

https://www.cnblogs.com/heavenyes/tag/Programing%20Language/ 

zhumiao
原文地址:https://www.cnblogs.com/zhumiao/p/9473201.html