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的更多相关文章

  1. Java集合类--温习笔记

    最近面试发现自己的知识框架有好多问题.明明脑子里知道这个知识点,流程原理也都明白,可就是说不好,不知道是自己表达技能没点,还是确实是自己基础有问题.不管了,再巩固下基础知识总是没错的,反正最近空闲时间 ...

  2. 做JavaWeb开发不知Java集合类不如归家种地

    Java作为面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储.但是使用数组存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容 ...

  3. 【转载】Java集合类Array、List、Map区别和联系

    Java集合类主要分为以下三类: 第一类:Array.Arrays第二类:Collection :List.Set第三类:Map :HashMap.HashTable 一.Array , Arrays ...

  4. 摘抄转载前辈们的Java集合类总结

    本文摘自 Blue Sky:http://www.cnblogs.com/hubcarl JAVA 集合类介绍和使用 类关系示意图Iterable(接口) │ └--Collection (接口) ├ ...

  5. Java集合类简单总结(重学)

    java集合类简介(重学) 一.Collection(集合).Map接口两者应该是平行关系吧. 1.Map介绍 Map是以键值(key-value)对来存放的,2个值.通过key来找到value(例: ...

  6. Java集合类中的哈希总结

    JAVA集合类中的哈希总结 目 录 1.哈希表 2.Hashtable.HashMap.ConcurrentHashMap.LinkedHashMap.TreeMap区别 3.Hashtable.Ha ...

  7. Java集合类: Set、List、Map、Queue使用场景梳理

    本文主要关注Java编程中涉及到的各种集合类,以及它们的使用场景 相关学习资料 http://files.cnblogs.com/LittleHann/java%E9%9B%86%E5%90%88%E ...

  8. Java 集合类详解(含类图)

    0.参考文献 此图中蓝色为抽象类.深红色表示接口(Arrays除外).绿色表示具体容器类 1.java集合类图 1.1 1.2 上述类图中,实线边框的是实现类,比如ArrayList,LinkedLi ...

  9. Java集合类: Set、List、Map、Queue使用

    目录 1. Java集合类基本概念 2. Java集合类架构层次关系 3. Java集合类的应用场景代码 1. Java集合类基本概念 在编程中,常常需要集中存放多个数据.从传统意义上讲,数组是我们的 ...

  10. 基础知识《六》---Java集合类: Set、List、Map、Queue使用场景梳理

    本文转载自LittleHann 相关学习资料 http://files.cnblogs.com/LittleHann/java%E9%9B%86%E5%90%88%E6%8E%92%E5%BA%8F% ...

随机推荐

  1. 自己动手实现java数据结构(四)双端队列

    1.双端队列介绍 在介绍双端队列之前,我们需要先介绍队列的概念.和栈相对应,在许多算法设计中,需要一种"先进先出(First Input First Output)"的数据结构,因 ...

  2. JavaWeb学习 (十)————Cookie

    一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学曾 ...

  3. 偏流角(Draft Angle)在等距螺旋中的作用

    劳动改变人,思维改变世界.我们可以接着聊螺旋线了. 在飞行程序设计中,偏流角(Draft Angle简写为DA)通常指得是受侧风影响航向偏移的最大角度.用速度向量来表示时,是图1中的三角形关系: 图1 ...

  4. [BZOJ 4671]异或图

    Description 题库链接 给定 \(s\) 个结点数相同且为 \(n\) 的图 \(G_1\sim G_s\) ,设 \(S = \{G_1, G_2,\cdots , G_s\}\) ,问 ...

  5. ModBus通信协议的【主从模式】

    主从模式 (1) 至少且只有一个主机,其他的都是从机 (2) 不管任何时候,从机都不能主动向主机发送数据 (3) 主机具有访问从机的权限,从机不可以主动访问从机,任何一次数据交换,都要由主机发起 (4 ...

  6. Mybatis generator代码生成

    背景 项目中使用Mybatis做持久层框架,但由于开发成员水平不一,写dao的时候,各有各的偏好,有时候还会写出带sql注入漏洞的代码. 出现sql注入漏洞,一般是#和$的区别没弄明白: $ 直接把字 ...

  7. js-QuickStart-base.js

    // 1.变量(Variables) var myVariable; myVariable = 'Bob'; // 数据类型 string number boolean array object // ...

  8. java源文件与类

    一个源文件可以包含多个类, 编译的时候,每一个类生成一个字符码文件, 源文件名可以和类名不一致,但字符码文件与类名一致, 如果类是public(公共类),源文件名必须与类名一致 命名规则:源文件的路径 ...

  9. 【读书笔记】iOS-iCloud介绍

    iCloud是一种面向消费者市场的云存储服务,苹果公司已经做了大量的工作让用户能够平滑过渡到iCloud,不过对开发者而言这意味着新的负担. 怎样使用iCloud? 你可以使用2种方式在你的应用中使用 ...

  10. 【读书笔记】iOS-iPad与iPhone

    在开发通用型应用的时候,你总是需要记住,iPad并不是一个大大的iPod touch,为iPad开发的应用的界面应该更好地利用iPad的大屏幕,而不应该是iPhone应用的复制品. 参考资料:< ...