初始化需要进行比较的集合,统一增加10万个元素,获取整个过程的执行时间。

1、List集合增加元素

 private static void testList() {

         List<Integer> list = new ArrayList<Integer>();

         long startTime = System.currentTimeMillis(); // 获取开始时间
for (int i = 0; i < 100000; i++) { list.add(i); }
long endTime = System.currentTimeMillis(); // 获取结束时间 System.out.println("List添加元素程序运行时间为:" + (endTime - startTime) + "ms"); // 输出程序运行时间 }

程序输出:

List添加10万个元素程序运行时间为:8ms

2、Set集合增加元素

 private static void testSet() {

         Set<Integer> set = new HashSet<Integer>();

         long startTime = System.currentTimeMillis(); // 获取开始时间
for (int i = 0; i < 100000; i++) { set.add(i); }
long endTime = System.currentTimeMillis(); // 获取结束时间 System.out.println("Set添加10万个元素程序运行时间为:" + (endTime - startTime) + "ms"); // 输出程序运行时间 }

程序输出:

Set添加10万个元素程序运行时间为:17ms

3、LinkedList集合增加元素

 private static void testLinkedList() {

         List<Integer> list = new LinkedList<Integer>();

         long startTime = System.currentTimeMillis(); // 获取开始时间
for (int i = 0; i < 100000; i++) { list.add(i); }
long endTime = System.currentTimeMillis(); // 获取结束时间 // 输出程序运行时间
System.out.println("LinkedList添加10万个元素程序运行时间为:" + (endTime - startTime) + "ms"); }

程序输出:

LinkedList添加10万个元素程序运行时间为:8ms

4、TreeSet集合增加元素

 private static void testTreeSet() {

         Set<Integer> set = new TreeSet<Integer>();

         long startTime = System.currentTimeMillis(); // 获取开始时间
for (int i = 0; i < 100000; i++) { set.add(i); }
long endTime = System.currentTimeMillis(); // 获取结束时间 // 输出程序运行时间
System.out.println("TreeSet添加10万个元素程序运行时间为:" + (endTime - startTime) + "ms"); }

程序输出:

TreeSet添加10万个元素程序运行时间为:40ms

总结:在不考虑去重和排序的情况下,以上几个常用集合的执行效率排序为:ArrayList >= LinkedList > HashSet > TreeSet

5、HashMap集合增加元素

 private static void testHashMap() {

         Map<Integer, Object> hashMap = new HashMap<Integer, Object>();

         long startTime = System.currentTimeMillis(); // 获取开始时间
for (int i = 0; i < 100000; i++) {
hashMap.put(i, "test");
} long endTime = System.currentTimeMillis(); // 获取结束时间 // 输出程序运行时间
System.out.println("HashMap添加10万个元素程序运行时间为:" + (endTime - startTime) + "ms"); }

程序输出:

HashMap添加10万个元素程序运行时间为:17ms

6、TreeMap集合增加元素

 private static void testTreeMap() {

         Map<Integer, Object> treeMap = new TreeMap<Integer, Object>();

         long startTime = System.currentTimeMillis(); // 获取开始时间
for (int i = 0; i < 100000; i++) {
treeMap.put(i, "test");
} long endTime = System.currentTimeMillis(); // 获取结束时间 // 输出程序运行时间
System.out.println("TreeMap添加10万个元素程序运行时间为:" + (endTime - startTime) + "ms");
}

程序输出:

TreeMap添加10万个元素程序运行时间为:40ms

总结:在不考虑排序的情况下,HashMap的执行效率高于TreeMap:HashMap > TreeMap。

比较Java中几个常用集合添加元素的效率的更多相关文章

  1. Java中的容器(集合)之ArrayList源码解析

    1.ArrayList源码解析 源码解析: 如下源码来自JDK8(如需查看ArrayList扩容源码解析请跳转至<Java中的容器(集合)>第十条):. package java.util ...

  2. Java中的容器(集合)之HashMap源码解析

    1.HashMap源码解析(JDK8) 基础原理: 对比上一篇<Java中的容器(集合)之ArrayList源码解析>而言,本篇只解析HashMap常用的核心方法的源码. HashMap是 ...

  3. Java中几种常用数据类型之间转换的方法

    Java中几种常用的数据类型之间转换方法: 1. short-->int 转换 exp: short shortvar=0; int intvar=0; shortvar= (short) in ...

  4. C#中四种常用集合的运用(非常重要)

    C#中4个常用的集合 1.ArrayList ArrayList类似于数组,有人也称它为数组列表.ArrayList可以动态维护,而数组的容量是固定的. 它的索引会根据程序的扩展而重新进行分配和调整. ...

  5. java中的数据结构(集合|容器)

    对java中的数据结构做一个小小的个人总结,虽然还没有到研究透彻jdk源码的地步.首先.java中为何需要集合的出现?什么需求导致.我想对于面向对象来说,对象适用于描述任何事物,所以为了方便对于对象的 ...

  6. Java中的数组与集合

    此文转载自:http://student-lp.iteye.com/blog/2082362 在java编程的过程中,我们不能确定某一类型的对象到底会需要多少,为了解决这个问题,java提供了容纳对象 ...

  7. java 中几种常用数据结构

    Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类. 一.几个常用类的区别 1.A ...

  8. Java 中几种常用设计模式

    Java 中一般认为有23种设计模式,当然暂时不需要所有的都会,但是其中常见的几种设计模式应该去掌握. 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模 ...

  9. java中的ArrayList 使得集合中的对象不重复

    JAVA中的List接口存放的元素是可以重复的,在这个我重写对象里面的equals()方法,让集合里存放的对象不能重复 首先建一个类,在里面的main()方法中实现 list1中存放的是可以重复对象的 ...

随机推荐

  1. CCF 201609-4 交通规划

    问题描述 试题编号: 201609-4 试题名称: 交通规划 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 G国国王来中国参观后,被中国的高速铁路深深的震撼,决定为自己的国家 ...

  2. XShell连接本地Ubuntu虚拟机

    VMware Workstation 安装好本地虚拟机之后,直接在虚拟机上敲命令着实不方便. 这个时候我们就需要一个远程命令工具来管理虚拟机,这里推荐使用XShell远程命令行工具 1.下载工具 直接 ...

  3. webpack学习笔记(二)-- 初学者常见问题及解决方法

    这篇文章是webpack学习第二篇,主要罗列了本人在实际操作中遇到的一些问题及其解决方法,仅供参考,欢迎提出不同意见. 注:本文假设读者已有webpack方面相关知识,故文中涉及到的专有名词不做另外解 ...

  4. Linux上SQL及MYSQL简单操作

    Linux上检查MYSQL是否安装: $ sudo service mysql start Ubuntu Linux安装配置MYSQL: $ sudo apt-get install mysql-se ...

  5. 简单实用的JQuery弹出层

    效果: 初始状态时滚动条是可以滚动的 弹出层出现之后:1.弹窗始终居于整个窗口的中间 2.滚动条不可滚动 实现代码: HTML代码: <div class="container&quo ...

  6. 3.Java集合总结系列:Set接口及其实现

    一.Set接口 Set 接口与 List 接口相比没有那么多操作方法,比如: 1.List 接口能直接设置或获取某个元素的值,而Set接口不能. 2.List 接口能直接在指定位置删除.增加元素,而S ...

  7. DynamicObject扩展--实现JSON和DynamicObject的序列化与反序列化

    度娘许久,找不到我满意的答案,于是自己东凑西凑实现一个. DynamicObject扩展--实现JSON和DynamicObject的序列化与反序列化,亲测良好. 看代码 using System; ...

  8. 浩哥解析MyBatis源码(五)——DataSource数据源模块之非池型数据源

    1 回顾 上一篇中我解说了数据源接口DataSource与数据源工厂接口DataSourceFactory,这二者是MyBatis数据源模块的基础,包括本文中的非池型非池型数据源(UnpooledDa ...

  9. JavaEE开发之Spring中的条件注解组合注解与元注解

    上篇博客我们详细的聊了<JavaEE开发之Spring中的多线程编程以及任务定时器详解>,本篇博客我们就来聊聊条件注解@Conditional以及组合条件.条件注解说简单点就是根据特定的条 ...

  10. How To Use ggplot2

    0. Preparation and Introduction ggplot2是R中新颖的数据可视化包,这得益于Leland Wilkinson在他的著作<The Grammar of Grap ...