比较Java中几个常用集合添加元素的效率
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较Java中几个常用集合添加元素的效率相关的知识,希望对你有一定的参考价值。
初始化需要进行比较的集合,统一增加10万个元素,获取整个过程的执行时间。
1、List集合增加元素
1 private static void testList() { 2 3 List<Integer> list = new ArrayList<Integer>(); 4 5 long startTime = System.currentTimeMillis(); // 获取开始时间 6 for (int i = 0; i < 100000; i++) { 7 8 list.add(i); 9 10 } 11 long endTime = System.currentTimeMillis(); // 获取结束时间 12 13 System.out.println("List添加元素程序运行时间为:" + (endTime - startTime) + "ms"); // 输出程序运行时间 14 15 }
程序输出:
List添加10万个元素程序运行时间为:8ms
2、Set集合增加元素
1 private static void testSet() { 2 3 Set<Integer> set = new HashSet<Integer>(); 4 5 long startTime = System.currentTimeMillis(); // 获取开始时间 6 for (int i = 0; i < 100000; i++) { 7 8 set.add(i); 9 10 } 11 long endTime = System.currentTimeMillis(); // 获取结束时间 12 13 System.out.println("Set添加10万个元素程序运行时间为:" + (endTime - startTime) + "ms"); // 输出程序运行时间 14 15 }
程序输出:
Set添加10万个元素程序运行时间为:17ms
3、LinkedList集合增加元素
1 private static void testLinkedList() { 2 3 List<Integer> list = new LinkedList<Integer>(); 4 5 long startTime = System.currentTimeMillis(); // 获取开始时间 6 for (int i = 0; i < 100000; i++) { 7 8 list.add(i); 9 10 } 11 long endTime = System.currentTimeMillis(); // 获取结束时间 12 13 // 输出程序运行时间 14 System.out.println("LinkedList添加10万个元素程序运行时间为:" + (endTime - startTime) + "ms"); 15 16 }
程序输出:
LinkedList添加10万个元素程序运行时间为:8ms
4、TreeSet集合增加元素
1 private static void testTreeSet() { 2 3 Set<Integer> set = new TreeSet<Integer>(); 4 5 long startTime = System.currentTimeMillis(); // 获取开始时间 6 for (int i = 0; i < 100000; i++) { 7 8 set.add(i); 9 10 } 11 long endTime = System.currentTimeMillis(); // 获取结束时间 12 13 // 输出程序运行时间 14 System.out.println("TreeSet添加10万个元素程序运行时间为:" + (endTime - startTime) + "ms"); 15 16 }
程序输出:
TreeSet添加10万个元素程序运行时间为:40ms
总结:在不考虑去重和排序的情况下,以上几个常用集合的执行效率排序为:ArrayList >= LinkedList > HashSet > TreeSet
5、HashMap集合增加元素
1 private static void testHashMap() { 2 3 Map<Integer, Object> hashMap = new HashMap<Integer, Object>(); 4 5 long startTime = System.currentTimeMillis(); // 获取开始时间 6 for (int i = 0; i < 100000; i++) { 7 hashMap.put(i, "test"); 8 } 9 10 long endTime = System.currentTimeMillis(); // 获取结束时间 11 12 // 输出程序运行时间 13 System.out.println("HashMap添加10万个元素程序运行时间为:" + (endTime - startTime) + "ms"); 14 15 }
程序输出:
HashMap添加10万个元素程序运行时间为:17ms
6、TreeMap集合增加元素
1 private static void testTreeMap() { 2 3 Map<Integer, Object> treeMap = new TreeMap<Integer, Object>(); 4 5 long startTime = System.currentTimeMillis(); // 获取开始时间 6 for (int i = 0; i < 100000; i++) { 7 treeMap.put(i, "test"); 8 } 9 10 long endTime = System.currentTimeMillis(); // 获取结束时间 11 12 // 输出程序运行时间 13 System.out.println("TreeMap添加10万个元素程序运行时间为:" + (endTime - startTime) + "ms"); 14 }
程序输出:
TreeMap添加10万个元素程序运行时间为:40ms
总结:在不考虑排序的情况下,HashMap的执行效率高于TreeMap:HashMap > TreeMap。
以上是关于比较Java中几个常用集合添加元素的效率的主要内容,如果未能解决你的问题,请参考以下文章
容器集合(集合的进阶,Collection,List,Set,Map,Map集合的综合使用--斗地主案列,并发修改异常,列表迭代器,Java面试中几个集合面试题)