java集合类List
1.List
Vector:线程安全的。
ArrayList:适合查找与顺序添加。
LinkedList:适合随机插入与删除。
1.1ArrayList与LinkedList的add添加
1.1.1ArrayList与LinkedList的顺序add添加
代码:
List<String> linkedList = new LinkedList<>();
List<String> arrayList = new ArrayList<>(); Long startTime = System.currentTimeMillis();
for (int i=; i<; i++) {
linkedList.add("linkedList"+i);
}
Long endTime = System.currentTimeMillis();
System.out.println("linkedList:"+(endTime-startTime)); startTime=0L;endTime=0L; startTime = System.currentTimeMillis();
for (int i=;i<; i++) {
arrayList.add("arrayList"+i);
}
endTime=System.currentTimeMillis();
System.out.println("arrayList:"+(endTime-startTime));
运行结果:
linkedList:340ms
arrayList:812ms
可以看出顺序添加ArrayList比LinkedList快
1.1.2ArrayList与LinkedList的add插入添加
List<String> linkedList = new LinkedList<>();
List<String> arrayList = new ArrayList<>(); Long startTime = System.currentTimeMillis(); for (int i=0;i<1000000; i++) {
arrayList.add(0,"arrayList"+i);
}
Long endTime=System.currentTimeMillis();
System.out.println("arrayList:"+(endTime-startTime)+"ms"); startTime=0L;endTime=0L; startTime = System.currentTimeMillis();
for (int i=0; i<1000000; i++) {
linkedList.add(0,"linkedList"+i);
} endTime=System.currentTimeMillis();
System.out.println("linkedList:"+(endTime-startTime)+"ms");
运行结果:
arrayList:127991ms
linkedList:1038ms
可以看出插入添加LinkedList比ArrayList快得多
1.2ArrayList与LinkedLis的set修改比较
代码:
List<String> linkedList = new LinkedList<>();
List<String> arrayList = new ArrayList<>(); for (int i=0;i<10000; i++) {
arrayList.add(i/2,"arrayList"+i);
}
for (int i=0; i<10000; i++) {
linkedList.add(i/2,"linkedList"+i);
} Long startTime = System.currentTimeMillis();
for (int i=0; i<10000; i++) {
linkedList.set(i,"linkedListNew"+i);
}
Long endTime=System.currentTimeMillis();
System.out.println("arrayList:"+(endTime-startTime)+"ms"); startTime=0L;endTime=0L; startTime = System.currentTimeMillis();
for (int i=0; i<10000; i++) {
arrayList.set(i,"linkedListNew"+i);
}
endTime=System.currentTimeMillis();
System.out.println("linkedList:"+(endTime-startTime)+"ms");
运行结果:
arrayList:417ms
linkedList:5ms
可以看出set修改LinkedList比ArrayList快的多
1.3ArrayList与LinkedLis的remove比较
1.3.1 ArrayList与LinkedLis的remove(0)比较
代码:
List<String> linkedList = new LinkedList<>();
List<String> arrayList = new ArrayList<>(); for (int i=0;i<10000; i++) {
arrayList.add(i/2,"arrayList"+i);
}
for (int i=0; i<10000; i++) {
linkedList.add(i/2,"linkedList"+i);
} Long startTime = System.currentTimeMillis();
for (int i=0; i<10000; i++) {
linkedList.remove(0);
}
Long endTime=System.currentTimeMillis();
System.out.println("linkedList:"+(endTime-startTime)+"ms"); startTime=0L;endTime=0L; startTime = System.currentTimeMillis();
for (int i=0; i<10000; i++) {
arrayList.remove(0);
}
endTime=System.currentTimeMillis();
System.out.println("arrayList:"+(endTime-startTime)+"ms");
运行结果:
linkedList:2ms
arrayList:11ms
可以看出两者都很快但LinkedList比ArrayList更快
1.3.2ArrayList与LinkedLis的0位置删除比较
代码:
List<String> linkedList = new LinkedList<>();
List<String> arrayList = new ArrayList<>(); for (int i=0;i<1000000; i++) {
arrayList.add("arrayList"+i);
}
for (int i=0; i<1000000; i++) {
linkedList.add("linkedList"+i);
}
Long startTime = System.currentTimeMillis();
for(int i=0; i< 1000000; i++){
arrayList.remove(0);
}
Long endTime=System.currentTimeMillis();
System.out.println("arrayList:"+(endTime-startTime)+"ms"); startTime=0L;endTime=0L; startTime = System.currentTimeMillis(); for(int i=0; i< 1000000; i++){
linkedList.remove(0);
}
endTime=System.currentTimeMillis();
System.out.println("linkedList:"+(endTime-startTime)+"ms");
运行结果
arrayList:129623ms
linkedList:26ms
java集合类List的更多相关文章
- Java集合类--温习笔记
最近面试发现自己的知识框架有好多问题.明明脑子里知道这个知识点,流程原理也都明白,可就是说不好,不知道是自己表达技能没点,还是确实是自己基础有问题.不管了,再巩固下基础知识总是没错的,反正最近空闲时间 ...
- 做JavaWeb开发不知Java集合类不如归家种地
Java作为面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储.但是使用数组存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容 ...
- 【转载】Java集合类Array、List、Map区别和联系
Java集合类主要分为以下三类: 第一类:Array.Arrays第二类:Collection :List.Set第三类:Map :HashMap.HashTable 一.Array , Arrays ...
- 摘抄转载前辈们的Java集合类总结
本文摘自 Blue Sky:http://www.cnblogs.com/hubcarl JAVA 集合类介绍和使用 类关系示意图Iterable(接口) │ └--Collection (接口) ├ ...
- Java集合类简单总结(重学)
java集合类简介(重学) 一.Collection(集合).Map接口两者应该是平行关系吧. 1.Map介绍 Map是以键值(key-value)对来存放的,2个值.通过key来找到value(例: ...
- Java集合类中的哈希总结
JAVA集合类中的哈希总结 目 录 1.哈希表 2.Hashtable.HashMap.ConcurrentHashMap.LinkedHashMap.TreeMap区别 3.Hashtable.Ha ...
- Java集合类: Set、List、Map、Queue使用场景梳理
本文主要关注Java编程中涉及到的各种集合类,以及它们的使用场景 相关学习资料 http://files.cnblogs.com/LittleHann/java%E9%9B%86%E5%90%88%E ...
- Java 集合类详解(含类图)
0.参考文献 此图中蓝色为抽象类.深红色表示接口(Arrays除外).绿色表示具体容器类 1.java集合类图 1.1 1.2 上述类图中,实线边框的是实现类,比如ArrayList,LinkedLi ...
- Java集合类: Set、List、Map、Queue使用
目录 1. Java集合类基本概念 2. Java集合类架构层次关系 3. Java集合类的应用场景代码 1. Java集合类基本概念 在编程中,常常需要集中存放多个数据.从传统意义上讲,数组是我们的 ...
- 基础知识《六》---Java集合类: Set、List、Map、Queue使用场景梳理
本文转载自LittleHann 相关学习资料 http://files.cnblogs.com/LittleHann/java%E9%9B%86%E5%90%88%E6%8E%92%E5%BA%8F% ...
随机推荐
- nginx介绍(二) - 默认配置
前言 前面, 在浏览器中, 输入linux 的ip, 出现了以下页面: 那这个页面在哪里呢? 一. 工具 notepad++ 在进入主题之前, 先来介绍下, 一会使用到的工具. 在notepad++里 ...
- 身份认证与加密浅谈(PKI)
利用PKI体系解决私密文件传输中一系列问题的大体思路 背景:现有A用户和B用户之间想加密传输一些秘密文件,通过什么样的技术可以确保A和B传输数据的安全性?方案:采用对称秘钥对数据进行加密传输(对称加密 ...
- [转]Angular4 自制分页控件
本文转自:https://blog.csdn.net/Junyuan_123/article/details/79486276 过年后第一波,自制的分页控件,可能功能没有 PrimeNG 那么好,但是 ...
- C#winform窗体用户控件自定义事件
C#许多事情都和事件有关系,大部分的事情我们可以通过C#自己的事件来完成,但如果我们自己新建了一个自定义控件,我们该如何定义自己想要的事件呢?下面我就来为大家粗略的讲解一番. 假设我们自定义了一个控件 ...
- VS2012使用验证控件出现[ASP.NET]WebForms UnobtrusiveValidationMode 需要 'jquery' 的 ScriptResourceMapping。請加入 ScriptResourceMapping 命名的 jquery (區分大小寫)。的解决办法。
方法一:在webconfig中找到 <appSettings><add key="aspnet:UseTaskFriendlySynchronizationContext& ...
- [android] 安卓消息推送的几种实现方式
消息推送的目的:让服务器端及时的通知客户端 实现方案 轮询:客户端每隔一定的时间向服务器端发起请求,获得最新的消息 特点:如果用在最新新闻通知上,效率就有点低了,技术简单,好实现 应用场景:服务器端以 ...
- html特殊字体显示
1.下载需要显示的ttf字体. 2.css样式调用. /* 微软雅黑 */ @font-face { font-family: microsoftyahei; src: url('${pageCont ...
- elasticsearch6.7 05. Document APIs(1)data replication model
data replication model 本节首先简要介绍Elasticsearch的data replication model,然后详细描述以下CRUD api: 1.读写文档(Reading ...
- 【Java深入研究】4、fail-fast机制
在JDK的Collection中我们时常会看到类似于这样的话: 例如,ArrayList: 注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证.快速失 ...
- 【Redis】3、Redis集群部署
Redis 集群是一个提供在多个Redis间节点间共享数据的程序集. Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下 ...