java--ArrayList,LinkedList应用比较
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class ListDemo {
//jdk8
public static void main(String[] args){
// add("ArrayList",50000);//11
// add("LinkedList",50000);//8
// add("ArrayList",1000000);//81
// add("LinkedList",1000000);//132
// addFirst("ArrayList",5000);//7
// addFirst("LinkedList",5000);//2
// addFirst("ArrayList",50000);//160
// addFirst("LinkedList",50000);//5
// remove("ArrayList",5000);//1
// remove("LinkedList",5000);//2
// remove("ArrayList",1000000);//2
// remove("LinkedList",1000000);//15
//
// removeFirst("ArrayList",5000);//5
// removeFirst("LinkedList",5000);//1
// removeFirst("ArrayList",100000);//795
// removeFirst("LinkedList",100000);//2
// removeMiddle("ArrayList",5000);//3
// removeMiddle("LinkedList",5000);//23
// removeMiddle("ArrayList",100000);//446
// removeMiddle("LinkedList",100000);//5637
}
public static void add(String s,int a){
if (s.equals("ArrayList")){
List<Object> list = new ArrayList<>();
long begin = System.currentTimeMillis();
for (int i = 0; i < a; i++) {
list.add(new Object());
}
long end = System.currentTimeMillis();
System.out.println(a+" "+s+":"+(end - begin));
}else {
LinkedList<Object> list = new LinkedList<>();
long begin = System.currentTimeMillis();
for (int i = 0; i < a; i++) {
list.add(new Object());
}
long end = System.currentTimeMillis();
System.out.println(a+" "+s+":"+(end - begin));
}
}
public static void addFirst(String s,int a){
if (s.equals("ArrayList")){
ArrayList<Object> list = new ArrayList<>();
long begin = System.currentTimeMillis();
for (int i = 0; i < a; i++) {
list.add(0,new Object());
}
long end = System.currentTimeMillis();
System.out.println(a+" "+s+":"+(end - begin));
}else {
LinkedList<Object> list = new LinkedList<>();
long begin = System.currentTimeMillis();
for (int i = 0; i < a; i++) {
list.addFirst(new Object());
}
long end = System.currentTimeMillis();
System.out.println(a+" "+s+":"+(end - begin));
}
}
public static void remove(String s,int a){
if (s.equals("ArrayList")){
List<Object> list = new ArrayList<>();
for (int i = 0; i < a; i++) {
list.add(i);
}
long begin = System.currentTimeMillis();
for (int i = 0; i < a; i++) {
list.remove(list.size()-1);
}
long end = System.currentTimeMillis();
System.out.println(a+" "+s+":"+(end - begin));
} else {
LinkedList<Object> list = new LinkedList<>();
for (int i = 0; i < a; i++) {
list.add(i);
}
long begin = System.currentTimeMillis();
for (int i = 0; i < a; i++) {
list.removeLast();
}
long end = System.currentTimeMillis();
System.out.println(a+" "+s+":"+(end - begin));
}
}
public static void removeFirst(String s,int a){
if (s.equals("ArrayList")){
List<Object> list = new ArrayList<>();
for (int i = 0; i < a; i++) {
list.add(0,new Object());
}
long begin = System.currentTimeMillis();
for (int i = 0; i < a; i++) {
list.remove(0);
}
long end = System.currentTimeMillis();
System.out.println(a+" "+s+":"+(end - begin));
} else {
LinkedList<Object> list = new LinkedList<>();
for (int i = 0; i < a; i++) {
list.add(0,new Object());
}
long begin = System.currentTimeMillis();
for (int i = 0; i < a; i++) {
list.removeFirst();
}
long end = System.currentTimeMillis();
System.out.println(a+" "+s+":"+(end - begin));
}
}
public static void removeMiddle(String s,int a){
if (s.equals("ArrayList")){
List<Object> list = new ArrayList<>();
for (int i = 0; i < a; i++) {
list.add(i);
}
long begin = System.currentTimeMillis();
while (list.size()>0){
list.remove(list.size()>>1);//右移/2,左移*2
}
long end = System.currentTimeMillis();
System.out.println(a+" "+s+":"+(end - begin));
} else {
LinkedList<Object> list = new LinkedList<>();
for (int i = 0; i < a; i++) {
list.add(i);
}
long begin = System.currentTimeMillis();
while (list.size()>0){
list.remove(list.size()>>1);//右移/2,左移*2
}
long end = System.currentTimeMillis();
System.out.println(a+" "+s+":"+(end - begin));
}
}
}
java--ArrayList,LinkedList应用比较的更多相关文章
- Java ArrayList、Vector和LinkedList等的差别与用法(转)
Java ArrayList.Vector和LinkedList等的差别与用法(转) ArrayList 和Vector是采取数组体式格式存储数据,此数组元素数大于实际存储的数据以便增长和插入元素,都 ...
- java.util.ArrayList、java.util.vector和java.util.LinkedList (JDK 1.8.0_111)
一.java.util.ArrayList 1.1 ArrayList 继承结构 ArrayList实现了RandomAccess,可以随机访问(其实就是通过数组下标访问):实现了Cloneable, ...
- [Java]ArrayList、LinkedList、Vector、Stack的比较
一.介绍 先回顾一下List的框架图 由图中的继承关系,可以知道,ArrayList.LinkedList.Vector.Stack都是List的四个实现类. AbstractList是一个抽象类,它 ...
- Java集合--ArrayList,LinkedList性能分析
转载请注明出处:http://www.cnblogs.com/skywang12345/p/3308900.html 第1部分 List概括 先回顾一下List的框架图 (01) List 是一个接口 ...
- Java——集合框架之ArrayList,LinkedList,迭代器Iterator
概述--集合框架 Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类).所有抽象出来的数据结构和操作(算法)统称为Java集合框架(Java Collection ...
- 浅谈Java中linkedlist和arraylist区别
在Java中,关于集合框架有这样一个体系结构: 其主要由两个接口派生而出:Collection和Map,然后再衍生出各自的一些实现类(比如Collection接口又被继承与Set和List接口,而他们 ...
- Java ArrayList和LinkedList
目录 集合的概念 集合体系结构 常用list集合 list集合的特点 ArrayList LinkedList 创建对象 常用方法 遍历 ArrayList和LinkedList的区别 集合的概念 ...
- java.util.ArrayList,java.util.LinkedList,java.util.Vector的区别,使用场合.
下图是Collection的类继承图 从图中可以看出:Vector.ArrayList.LinkedList这三者都实现了List 接口.所有使用方式也很相似,主要区别在于实现方式的不同,所以对不同的 ...
- java面试题(杨晓峰)---第八讲谈谈Vector,ArrayList,LinkedList有何区别?
Vector,ArrayList,LinkedList均为线性的数据结构,但是从现实方式与应用场景中又存在差别. 1 底层实现方式 ArrayList内部数组来实现,LinkedList内部采用双向链 ...
- Java Collection - ArrayList & LinkedList
总结 ref: https://blog.csdn.net/qq_32679815/article/details/78907437 1-ArrayList是实现了基于动态数组的数据结构,Linked ...
随机推荐
- linux清理缓存
在free -h中查看自己的内存发现在运行一段时间后,有很多内存都被缓存占用, 所以要清理下缓存,增大可用内存 直接进入root账户,输入以下命令 echo 3 > /proc/sys/vm/d ...
- Factory Methods
The static factory method pattern is a way to encapsulate object creation. Without a factory method, ...
- css----overflow(布局)
CSS overflow 属性用于控制内容溢出元素框时显示的方式. CSS Overflow CSS overflow 属性可以控制内容溢出元素框时在对应的元素区间内添加滚动条. overflow属性 ...
- spring+springMVC+mybatis框架整合——配置文件说明
如下图 web.xml配置说明: spring配置文件说明-1: spring配置文件说明-2: spring配置助记: 扫注(base) 读配(loc) 数据源(和comb(使用c3p0数据源)) ...
- 安装并配置前端自动化工具-gulp
由于现在前端自动化已经很有必要了,所以我今天死皮烂脸的找了2位前端大咖帮助我安装和配置gulp,讲真,这一步步弄下来直到安装配置成功,到现在还是迷迷糊糊,不过我还是把这些步骤给记录下来,以防下次不记得 ...
- ADSL(Asymmetric Digital Subscriber Loop)技术
上行带宽,下行带宽 宽带上行下行是指一般ADSL上网方式上行与下行速率,上行就是从电脑上传的速度,下行就是从网络上的主机下载速度,一般下行速率比较高! ADSL(Asymmetric Digital ...
- 转载:解决npm安装时出现run `npm audit fix` to fix them, or `npm audit` for details
转载自:https://blog.csdn.net/qq_39165556/article/details/89333028 1.第一种解决办法 npm audit fix npm audit fix ...
- CSS-给Font Awesome拓展Base64编码的图标
和 fa 一样设置到::before中就行了,不过 fa 是直接设置内容,这里用的背景图 .fa-science-garden::before { content: ""; dis ...
- js不同类型作比较
引用自 http://www.zhufengpeixun.cn/jishuziliao/javaScriptzhuanti/2014-06-14/300.html 不同类型间的比较,规律如下 类型 类 ...
- mootools使用Request.send()数据时刷新整个页面
今天使用mootools做ajax登录时使用Request().send()数据时老是刷新整个页面,换成Requesr.JSON()也不行,弄了好长时间,很郁闷啊,最后终于发现onSuccess:fu ...