Java ArrayList和LinkedList的区别和使用情况

ArrayList数组结构,所以用下标查询的速度比较快,但是插入和删除元素速度较慢。

LikedList链表结构,所以插入删除元素的时间复杂度较好,但是查询需要遍历元素,导致效率较低。

一般情况下,用ArrayList就可以了,如果涉及到频繁的插入和删除元素,这个时候考虑使用LinkedList。

List<Integer> arraylist = new ArrayList<Integer>();
  long start = System.currentTimeMillis();
  for(int i=0;i<200000;i++){
   arraylist.add(i);//向集合尾部添加元素
  }
  long end = System.currentTimeMillis();//毫秒单位
  System.out.println("ArrayList向集合尾部添加元素需要的时间"+(end-start));
  
  long start1 = System.currentTimeMillis();
  for(int i=0;i<200000;i++){
   arraylist.add(arraylist.size()/2,i);//向集合中间位置添加元素
  }
  long end1 = System.currentTimeMillis();//毫秒单位
  System.out.println("ArrayList向集合中间位置添加元素需要的时间"+(end1-start1));
  
  long start2 = System.currentTimeMillis();
  for(int i=0;i<200000;i++){
   arraylist.add(0,i);//向集合头部添加元素
  }
  long end2 = System.currentTimeMillis();//毫秒单位
  System.out.println("ArrayList向集合头部添加元素需要的时间"+(end2-start2));
  
  long start3 = System.currentTimeMillis();
  for(int i=0;i<200000;i++){
   arraylist.get(i);//向集合尾部添加元素
  }
  long end3 = System.currentTimeMillis();
  System.out.println("ArrayList查询元素需要的时间"+(end3-start3));

运行结果(毫秒为单位):
ArrayList向集合尾部添加元素需要的时间7
ArrayList向集合中间位置添加元素需要的时间3371
ArrayList向集合头部添加元素需要的时间11572
ArrayList查询元素需要的时间3

LinkedList<Integer> linkedlist = new LinkedList<Integer>();
  
  long start = System.currentTimeMillis();
  for(int i=0;i<200000;i++){
   linkedlist.add(i);//向集合尾部添加元素
  }
  long end = System.currentTimeMillis();//毫秒单位
  System.out.println("LinkedList向集合尾部添加元素需要的时间"+(end-start));
  
  long start1 = System.currentTimeMillis();
  for(int i=0;i<200000;i++){
   linkedlist.add(linkedlist.size()/2,i);//向集合中间添加元素
  }
  long end1 = System.currentTimeMillis();//毫秒单位
  System.out.println("LinkedList向集合中间添加元素需要的时间"+(end1-start1));
  
  long start2 = System.currentTimeMillis();
  for(int i=0;i<200000;i++){
   linkedlist.addFirst(i);//向集合中间添加元素
  }
  long end2 = System.currentTimeMillis();//毫秒单位
  System.out.println("LinkedList向集合头部添加元素需要的时间"+(end2-start2));

运行结果(毫秒为单位):
LinkedList向集合尾部添加元素需要的时间11
LinkedList向集合中间添加元素需要的时间142921
LinkedList向集合头部添加元素需要的时间7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值