Java集合类之List性能比较
来源:互联网 发布:mac用 电子书app txt 编辑:程序博客网 时间:2024/06/06 03:28
ArrayList/LinkedList/Vector 三者添加元素、删除元素、遍历耗时对比
package com.loongshaw;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Vector;/** * * @author loongshaw * @note 比较ArrayList LinkedList Vector三中类型的列表操作效率 * */public class ListComparation { public static void arrayListTest(int counts){ long startTime = System.currentTimeMillis(); List list = new ArrayList(); Integer obj = Integer.valueOf(1); for(int i=0;i<counts;i++){ list.add(obj); } long addTime = System.currentTimeMillis(); for(int k=0;k<counts;k++){ list.get(k); } /** Iterator iter = list.iterator(); while(iter.hasNext()){ iter.next(); } **/ long getTime = System.currentTimeMillis(); for(int j=0;j<counts;j++){ list.remove(obj); } long deleteTime = System.currentTimeMillis(); System.out.println("ArrayList 添加"+counts+"个对象耗时"+(addTime-startTime)+",遍历耗时:"+(getTime-addTime)+",删除耗时:"+(deleteTime-getTime)); } public static void linkedListTest(int counts){ long startTime = System.currentTimeMillis(); LinkedList list = new LinkedList(); Integer obj = Integer.valueOf(1); for(int i=0;i<counts;i++){ list.addLast(obj); } long addTime = System.currentTimeMillis(); for(int k=0;k<counts;k++){ list.getFirst(); } /** Iterator iter = list.iterator(); while(iter.hasNext()){ iter.next(); } **/ long getTime = System.currentTimeMillis(); for(int j=0;j<counts;j++){ list.remove(obj); } long deleteTime = System.currentTimeMillis(); System.out.println("LinkedList 添加"+counts+"个对象耗时"+(addTime-startTime)+",遍历耗时:"+(getTime-addTime)+",删除耗时:"+(deleteTime-getTime)); } public static void vectorTest(int counts){ long startTime = System.currentTimeMillis(); List list = new Vector(); Integer obj = Integer.valueOf(1); for(int i=0;i<counts;i++){ list.add(obj); } long addTime = System.currentTimeMillis(); for(int k=0;k<counts;k++){ list.get(k); } /** Iterator iter = list.iterator(); while(iter.hasNext()){ iter.next(); } **/ long getTime = System.currentTimeMillis(); for(int j=0;j<counts;j++){ list.remove(obj); } long deleteTime = System.currentTimeMillis(); System.out.println("Vector 添加"+counts+"个对象耗时"+(addTime-startTime)+",遍历耗时:"+(getTime-addTime)+",删除耗时:"+(deleteTime-getTime)); } public static void main(String[] args){ int counts = 10000; arrayListTest(counts); linkedListTest(counts); vectorTest(counts); }}
操作1万个数据
时间单位:毫秒
ArrayList 添加10000个对象耗时1,遍历耗时:0,删除耗时:8LinkedList 添加10000个对象耗时1,遍历耗时:1,删除耗时:1Vector 添加10000个对象耗时1,遍历耗时:2,删除耗时:8
操作10万个数据
时间单位:毫秒
ArrayList 添加100000个对象耗时4,遍历耗时:2,删除耗时:843LinkedList 添加100000个对象耗时4,遍历耗时:2,删除耗时:4Vector 添加100000个对象耗时5,遍历耗时:5,删除耗时:823
操作100万个数据
时间单位:毫秒
ArrayList 添加1000000个对象耗时17,遍历耗时:4,删除耗时:125005LinkedList 添加1000000个对象耗时69,遍历耗时:3,删除耗时:9Vector 添加1000000个对象耗时10,遍历耗时:8,删除耗时:119343
对比数据
操作1万个数据
操作10万个数据
操作100万个数据
测试环境
jdk8+eclipse+macpro
结论
根据耗时表格, 我们可以判断何时该用ArrayList,何时该用LinkedList.
总的来说, LinkedList更适用于:
- 大量的增加/删除操作
ArrayList和Vector两者操作性能差异不大,但ArrayList适合开发者自由控制其同步状态。
0 0
- Java集合类之List性能比较
- Java Collections Framework - Java集合框架之List篇 ArrayList与LinkedList等的性能比较
- Java Collections Framework - Java集合框架之List篇 ArrayList与LinkedList等的性能比较
- Java Collections Framework - Java集合框架之List篇 ArrayList与LinkedList等的性能比较
- java集合类性能比较
- java集合框架之List实现类的性能分析
- Java List集合比较
- java集合类之List
- java集合类之List
- java集合类之List
- java集合框架性能比较
- Java集合之List集合
- JAVA集合之List
- Java集合之List
- Java集合之List
- Java集合之List
- java集合之List
- java 集合之List
- Oracle-单表合并列
- Unity3D Animator 动态添加事件回调和替换动画
- Git管理多个远程仓库(GitHub和Coding)
- LeetCode 034
- 解决快递100普通key不能查询顺丰、申通等快递问题
- Java集合类之List性能比较
- 从一个URL下载原始数据,基于byte字节,得到byte数组
- Java集合类之Map
- 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)
- Java集合类之Set
- C#制作activeX控件
- [Hadoop]源码分析(1)----FileSytem
- 2015-12-23日记:稳步的走向稳定与互联网加教育的理念阐述
- 【AC自动机+DP】[USACO JAN2012 GOLD Problem 1: Video Game Combos]