比较Java中几个常用集合添加元素的效率
初始化需要进行比较的集合,统一增加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中几个常用集合添加元素的效率的更多相关文章
- Java中的容器(集合)之ArrayList源码解析
		1.ArrayList源码解析 源码解析: 如下源码来自JDK8(如需查看ArrayList扩容源码解析请跳转至<Java中的容器(集合)>第十条):. package java.util ... 
- Java中的容器(集合)之HashMap源码解析
		1.HashMap源码解析(JDK8) 基础原理: 对比上一篇<Java中的容器(集合)之ArrayList源码解析>而言,本篇只解析HashMap常用的核心方法的源码. HashMap是 ... 
- Java中几种常用数据类型之间转换的方法
		Java中几种常用的数据类型之间转换方法: 1. short-->int 转换 exp: short shortvar=0; int intvar=0; shortvar= (short) in ... 
- C#中四种常用集合的运用(非常重要)
		C#中4个常用的集合 1.ArrayList ArrayList类似于数组,有人也称它为数组列表.ArrayList可以动态维护,而数组的容量是固定的. 它的索引会根据程序的扩展而重新进行分配和调整. ... 
- java中的数据结构(集合|容器)
		对java中的数据结构做一个小小的个人总结,虽然还没有到研究透彻jdk源码的地步.首先.java中为何需要集合的出现?什么需求导致.我想对于面向对象来说,对象适用于描述任何事物,所以为了方便对于对象的 ... 
- Java中的数组与集合
		此文转载自:http://student-lp.iteye.com/blog/2082362 在java编程的过程中,我们不能确定某一类型的对象到底会需要多少,为了解决这个问题,java提供了容纳对象 ... 
- java 中几种常用数据结构
		Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类. 一.几个常用类的区别 1.A ... 
- Java 中几种常用设计模式
		Java 中一般认为有23种设计模式,当然暂时不需要所有的都会,但是其中常见的几种设计模式应该去掌握. 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模 ... 
- java中的ArrayList 使得集合中的对象不重复
		JAVA中的List接口存放的元素是可以重复的,在这个我重写对象里面的equals()方法,让集合里存放的对象不能重复 首先建一个类,在里面的main()方法中实现 list1中存放的是可以重复对象的 ... 
随机推荐
- Spring Data JPA,一种动态条件查询的写法
			我们在使用SpringData JPA框架时,进行条件查询,如果是固定条件的查询,我们可以使用符合框架规则的自定义方法以及@Query注解实现. 如果是查询条件是动态的,框架也提供了查询接口. Jpa ... 
- Linux 修改时区 不用重启
			1.cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 2.使用tzselect命令,根据提示选择 3.使用date查看是否修改正确 4.运行hwc ... 
- [转]利用excel进行线性规划求解
			利用线性回归方法求解生产计划 方法一: 1.建立数学模型: 设变量:设生产拉盖式书桌x台,普通式书桌y台,可得最大利润 确定目标函数及约束条件 目标函 ... 
- PHP的简单易懂文件管理,可实现基本功能
			我们利用的是嵌入PHP代码和ajax结合的方式,首相想到的是利用遍历文件的方式找出分件下的目录和文件,并且找到它们的路径,使用 dirname取上级目录, basename从完整路径中取文件名,其中最 ... 
- CSS学习之选择器
			html是盖房子,css是将房子装扮的更漂亮一些!CSS(Cascading Style Sheets),值层叠样式表. 语法 选择器 { 属性 : 属性值 ; } 比如, p{color:red;} ... 
- C#随机取得可用端口号
			TCP与UDP段结构中端口地址都是16比特,可以有在0---65535范围内的端口号.对于这65536个端口号有以下的使用规定: (1)端口号小于256的定义为常用端口,服务器一般都是通过常用端口号来 ... 
- iOS 组件化
			iOS 组件化介绍 随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间 ... 
- 在js中,window != top 的作用
			在网站的首页加上下面的javascript,就可以把自己的窗口变成是最前端的窗口.可以避免别人把你的网站放在他的iframe中,显示的就是他的网站了,误导浏览者. <script type=&q ... 
- 开源 & 在线免费使用:升讯威 周报系统
			这个周报系统大约写于2015年,缘起当时所带的开发团队需要逐步建立或完善一些项目管理方法. 在调研了网上的诸多项目管理或周报/日报管理系统之后,并没有找到符合当时情况的系统,这里最大的问题不是网上既有 ... 
- React文档翻译系列(一)安装
			原文地址:原文 本系列是针对React文档进行的翻译,因为自己在学习react的时候,最开始通过看博客或者论坛等中文资料,有些内容是零零散散的接收,并没有给自己带来很好的效果,所以后来决定把文档的原文 ... 
