比较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中存放的是可以重复对象的 ...
随机推荐
- PHP-配置方法
由于php是一个zip文件(非install版),安装较为简单,解压就行.把解压的 php5.2.1-Win32重命名为 php5.并复制到C盘目录下.即安装路径为 c:\php5 1 找到php目录 ...
- ansj 2.0.7 错误例子分析
我在做一个solr的项目,分词选定了ansj分词. 选择ansj的原因: 1)身边若干朋友的念叨,说是效果不错 2)网上看了若干评论,说是不错 3)自己尝试了一些case,觉得确实不错. 好了,项目中 ...
- js数组,字符串常用方法汇总(面试必备)
字符串: 1.concat() – 将两个或多个字符的文本组合起来,返回一个新的字符串. 2.indexOf() – 返回字符串中一个子串第一处出现的索引.如果没有匹配项,返回 -1 . 3.ch ...
- spring切面编程AOP 范例一
参照网上的spring AOP编程实例进行配置,但是碰到了几个坑.这篇文章重点讲解一下我踩过的两个坑: 1.使用@Service自动装配的时候,基础扫描包配置要正确: 2.xml中切面配置中的exec ...
- TFS2017代码搜索功能
当团队或者公司的研发中心的代码库扩展到了一定程度,在代码库中查找一些需要的代码会变的比较困难.比如敏捷模式下的项目小组希望能够找到并重用其他小组开发的一些基础性的功能代码,我们通常需要去找当事人去询问 ...
- iOS开发之如何修改导航栏的内容
导航栏的内容由栈顶控制器的navigationItem属性决定. UINavigationItem有以下属性影响着导航栏的内容(通常在子控制器中viewDidLoad方法中调用这些方法): 左上角的返 ...
- Failed to connect to Xilinx hw_server. Check if the hw_server is running and correct TCP port is used.
Failed to connect to Xilinx hw_server. Check if the hw_server is running and correct TCP port is us ...
- JSTL 核心标签库 使用(转)
在JSP的开发中,迭代是经常要使用到的操作.例如,逐行的显示查询的结果等.在早期的JSP中,通常使用Scriptlets来实现Iterator或者Enumeration对象的迭代输出.现在,通过JST ...
- 虚拟机Linux 的一些基础命令和注释
cd命令 cd ==回到初始,主目录 cd - ==回到上一级目录交替 cd ~ ==回到root家目录 cd . ==当前目录 cd .. ==进入上一级目录 ls命令 ls == ...
- CSS3学习笔记(3)-CSS3边框
p{ font-size: 15px; } .alexrootdiv>div{ background: #eeeeee; border: 1px solid #aaa; width: 99%; ...