ArrayList和LinkedList区别
来源:互联网 发布:win8.1和ubuntu双系统 编辑:程序博客网 时间:2024/06/16 02:16
1.ArrayList是实现了基于动态数组(Object[])的数据结构,LinkedList基于链表的数据结构(Node)。
2.ArrayList初始长度为10,扩容后为1.5*oldCapacity。
3.ArrayList的空间浪费主要体现在扩容后结尾会预留一定的容量空间(可以调用trimSize),LinkedList空间花费体现在它的每个元素新建都需要一定的空间(new Node对象)。
4.对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。
5.插入数据时,如果是在集合的前段(大概集合容量的前1/10)处插入数据时,LinkedList性能明显优于ArrayList;
当在集合的中部甚至靠后的位置插入大量数据时,ArrayList的性能反而远远优于LinkedList。
结论:Linkedlist相较于ArrayList的唯一优势在于集合前段的数据的插入。
具体Demo:
/** * Created by flh on 2017/8/28. */import java.util.*;public class ArrayOrLinked { static List<Integer> array=new ArrayList<Integer>(); static List<Integer> linked=new LinkedList<Integer>(); public static long getTime(List list){ long time=System.currentTimeMillis(); for(int i=0;i<10000;i++){ int index=Collections.binarySearch(list, list.get(i)); if(index!=i){ System.out.println("ERROR!"); } } return System.currentTimeMillis()-time; } public static long insertTime(List list){ long time=System.currentTimeMillis(); for(int i=1000;i<10000;i++){ list.add(1000, i); } return System.currentTimeMillis()-time; } public static void main(String[] args) { for(int i=0;i<10000;i++){ array.add(i); linked.add(i); } System.out.println("array time:"+getTime(array)); System.out.println("linked time:"+getTime(linked)); System.out.println("array insert time:"+insertTime(array)); System.out.println("linked insert time:"+insertTime(linked)); }}
注意insertTime方法中:
list.add(1000, i);
在十分之一处进行插入,运行结果为:
array time:4linked time:258array insert time:26linked insert time:19
在前部分插入,效率LinkedList>ArrayLsit
代码改为:
list.add(5000, i);
在二分之一处进行插入,运行结果为:
array time:3linked time:249array insert time:18linked insert time:90
在中部及后半部分插入,效率ArrayLsit>LinkedList
阅读全文
0 0
- ArrayList和LinkedList区别
- ArrayList和LinkedList区别
- ArrayList和LinkedList区别?
- ArrayList和LinkedList区别
- ArrayList和LinkedList区别
- ArrayList和LinkedList区别
- ArrayList和LinkedList区别
- LinkedList 和 ArrayList 区别
- ArrayList和LinkedList区别
- ArrayList和LinkedList区别
- ArrayList和LinkedList区别
- ArrayList和LinkedList区别
- ArrayList和LinkedList区别
- ArrayList和LinkedList区别
- ArrayList和LinkedList区别
- ArrayList和LinkedList区别
- ArrayList和LinkedList区别
- ArrayList和LinkedList区别
- 企业仓库管理软件免费版要把处理好三个问题 利用凌云仓库管理软件免费版的智能补货功能可以快速的指定采购策略,这里面就需要及时了解每一张采购订单的执行情况,不但要防止遗漏订单情况的发生,更要防止情绪化采购
- ubuntu运行supervisor时报错,找不到supervisor.sock
- 6.基于poll的TCP echo服务器
- Java知识:异常的一些看法
- 全局变量,静态全局变量,静态局部变量,局部变量
- ArrayList和LinkedList区别
- spring的RedisTemplate
- how to install eclipse in ubuntu (PyDev)
- 数据库三范式理解
- AndroidPdfViewer
- one-hot转为distributed representation表示
- HBase RPC理解之一
- Java 正则表达式
- 2017暑假第二阶段第七场 总结