博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ArrayList、Linkedlist和Vector
阅读量:2381 次
发布时间:2019-05-10

本文共 1593 字,大约阅读时间需要 5 分钟。

一、个人感觉,三个中最常用的是ArrayList

Vector和ArrayList(线程安全

1、vector是线程同步的,所以它也是线程安全的,而arraylist是线程异步的,是不安全的。

2、记住并发修改异常 java.util.ConcurrentModificationException ,优先考虑ArrayList,除非你在使用多线程所需。

Aarraylist和Linkedlist

1、对于随机访问get和set,ArrayList觉得优于LinkedList,LinkedList要移动指针。
2、于新增和删除操作add和remove,LinedList比较占优势,ArrayList要移动数据。
3、单条数据插入或删除,ArrayList的速度反而优于LinkedList.若是批量随机的插入删除数据,LinkedList的速度大大优于ArrayList. 因为ArrayList每插入一条数据,要移动插入点及之后的所有数据。

二、结构决定性能

序列(List),有序的Collection,正如它的名字一样,是一个有序的元素列表。确切的讲,列表通常允许满足 e1.equals(e2) 的元素对 e1 和 e2,并且如果列表本身允许 null 元素的话,通常它们允许多个 null 元素。实现List的有:ArrayList、LinkedList、Vector、Stack等。

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 

2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

ArrayList是一个可调整大小的数组实现的序列。随着元素增加,其大小会动态的增加。此类在Iterator或ListIterator迭代中,调用容器自身的remove和add方法进行修改,会抛出ConcurrentModificationException并发修改异常。

注意,此实现不是同步的。如果多个线程同时访问一个 ArrayList 实例,而其中至少一个线程从结构上修改了列表,那么它必须 保持外部同步。(结构上的修改是指任何添加或删除一个或多个元素的操作,或者显式调整底层数组的大小;仅仅设置元素的值不是结构上的修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方法将该列表“包装”起来。这最好在创建时完成,以防止意外对列表进行不同步的访问:

List list = Collections.synchronizedList(new ArrayList(…));

static final int N=50000; 2     static long timeList(List list){ 3         long start=System.currentTimeMillis(); 4         Object o = new Object(); 5         for(int i=0;i
());30 List list2=addList(new LinkedList<>());31 System.out.println("ArrayList查找"+N+"条耗时:"+readList(list1));32 System.out.println("LinkedList查找"+N+"条耗时:"+timeList(list2));33 }
结果:

转载地址:http://bmrxb.baihongyu.com/

你可能感兴趣的文章
一种适合中小团队的的Android自动化压力测试方案
查看>>
CNNs在图像压缩领域的运用——An End-to-End Compression Framework Based on Convolutional Neural Networks
查看>>
今天 把git攻克了
查看>>
Win7下的一些EXE文件图标莫名奇妙丢失
查看>>
[ZZ]变速齿轮作者的文章--绝杀反外挂方案
查看>>
了解内核的装入地址和入口地址,vmlinux.bin与vmlinux
查看>>
内核里面对大小写字符的转换
查看>>
网络分层的好处是什么?
查看>>
thinking in linux 机制与策率
查看>>
linux samba服务与VISTA互通
查看>>
在svn和git之间选择
查看>>
龙星课程: 局部性原理在计算机和分布式系统中的应用
查看>>
eclipse的奇怪的更新方式
查看>>
MIPS技术公司官方对linux的支持信息
查看>>
openflow简介
查看>>
windows7配置虚拟AP的脚本
查看>>
windows7定时关机脚本
查看>>
ARM流水线结构的发展(ARM7~ARM11)
查看>>
Dalvik: 从makefile入门
查看>>
常用浮点数常量
查看>>