List ArrayList LinkedList
来源:互联网 发布:当今世界网络强国 编辑:程序博客网 时间:2024/05/21 08:36
List ArrayList LinkedList
List用于存放多个元素,能够维护元素的次序,并且允许元素的重复。
List接口一共有三个实现类:LinkedList、ArrayList、Vector
三者异同:
LinkedList
链式存储—它用链表结构存储数据,适合数据的动态插入和删除,随机访问和遍历速度比较慢(需从表头开始查找、遍历)。
它还提供了List接口中没有定义的方法来专门用于操作表头和表尾元素,使它可以当作堆栈、队列和双向队列使用(LinkedList是一种双向链表数据结构,同时(直接)继承了List和Deque)
ArrayList
顺序存储–内部是通过数组实现的,它允许对元素进行快速随机访问。数组每个元素之间顺序存储,当数组大小不满足时需要增加存储能力—将已有数组的数据复制到新的存储空间中。
当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。
Vector
与ArrayList一样,也是通过数组实现的,
不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此访问它比访问ArrayList慢。
当数组的大小不够的时候,需要重新建立数组,然后将元素拷贝到新的数组内,ArrayList和Vector的扩展数组的大小不同:
ArrayList中扩容:
public void ensureCapacity(int minCapacity) { modCount++; int oldCapacity = elementData.length; if (minCapacity > oldCapacity) { Object oldData[] = elementData; int newCapacity = (oldCapacity * 3)/2 + 1; // ArrayList每次扩充原数组长度的50%* + 1 if (newCapacity < minCapacity) newCapacity = minCapacity; // minCapacity is usually close to size, so this is a win: elementData = Arrays.copyOf(elementData, newCapacity); }}
Vector中扩容:
private void ensureCapacityHelper(int minCapacity) { int oldCapacity = elementData.length; // 存储数据数组的长度 if (minCapacity > oldCapacity) { Object[] oldData = elementData; int newCapacity = (capacityIncrement > 0) ? (oldCapacity + capacityIncrement) : (oldCapacity * 2); // capacityincrement为0,则Vector每次扩充一倍,capacityincrement>0时,则Vector每次扩充capacityIncrement if (newCapacity < minCapacity) { // newCapacity = minCapacity; } elementData = Arrays.copyOf(elementData, newCapacity); }}
阅读全文
0 0
- list arraylist 和 linkedlist
- java List LinkedList ArrayList
- List(ArrayList与LinkedList)
- java??List?LinkedList?ArrayList ??
- List ArrayList LinkedList 初探
- List ArrayList LinkedList
- java、List、ArrayList、LinkedList
- 集合list、ArrayList、LinkedList、Vector
- Collection-List/ArrayList/LinkedList/Vector
- List的ArrayList和LinkedList
- Collection框架(Collection,List,ArrayList,LinkedList,Vector)
- List 和 LinkedList/ArrayList 声明的区别
- List ArrayList LinkedList
- List集合:Vector ArrayList LinkedList异同
- java中的list,arraylist,vector,linkedlist
- 黑马程序员-List-ListIterator-LinkedList-ArrayList
- List接口下 Arraylist Linkedlist Vector区别
- Collection之List Vector ArrayList and linkedList
- VS2010中创建DLL和(静态)调用DLL
- RESTful登录设计(基于Spring及Redis的Token鉴权)
- Android消息机制-Handler(一)
- 绘制复杂的原理图元件和pcb封装库用于cadence
- org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /otter/channel/6/
- List ArrayList LinkedList
- tomcat运行时信息提示
- es6的杂乱的知识总结
- spring cloud微服务框架 第二天
- 二进制与十六进制的转换
- Java的集合类以及hashMap的实现原理
- 今晚19:30直播阿里巴巴大规模持续集成的技术演进之路_欢迎免费观看
- U盘文件系统FAT32、exFAT、NTFS之间有什么区别?
- 流式大数据处理的三种框架:Storm,Spark和Samz