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. [深度学习]理解RNN, GRU, LSTM 网络

    Recurrent Neural Networks(RNN) 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义 ...

  2. 搭建oracle linux虚拟机报错解决

    sysctl -P 报错解决办法问题症状修改 linux 内核文件 #vi /etc/sysctl.conf后执行sysctl  -P 报错error: "net.bridge.bridge ...

  3. vuejs深入浅出—基础篇

    一.从HelloWorld说起 任何语言的都是从Hello World开始的,VueJs也不例外,直接上代码: <script src="https://unpkg.com/vue/d ...

  4. 转STM32官方固件库简介

    ST(意法半导体)为了方便用户开发程序,提供了一套丰富的 STM32 固件库.固件库就是函数的集合,固件库函数的作用是向下负责与寄存器直接打交道,向上提供用户函数调用的接口(API) .固件库将这些寄 ...

  5. Java集合框架——容器的快速报错机制 fail-fast 是什么?

    前言:最近看 java 集合方面的源码,了解到集合使用了 fail-fast 的机制,这里就记录一下这个机制是什么,有什么用,如何实现的. 一.fail-fast 简介 fail-fast 机制,即快 ...

  6. 在WindowsPhone开发中使用MVVM设计模式

    相信.NET程序员多多少少都听说过MVVM的设计模式,对于一个大一点的项目来说,使用这种设计模式无疑是一种不错的选择, 它提高了程序的可维护性,降低了耦合度,可以实现代码的重用,方便独立开发和进行测试 ...

  7. LintCode Sqrt(x)

    Implement int sqrt(int x). Compute and return the square root of x. Have you met this question in a ...

  8. APP接口调用流程

  9. Python shelve

    shelve模块只有一个open函数,返回类似字典的对象,可读可写; key必须为字符串,而值可以是python所支持的数据类型. import shelve f = shelve.open('SHE ...

  10. fetch发送Form Data请求并携带cookie

    今天我们来说说如何fetch发送Form Data请求并携带cookie,直接进入正题好吧,别问我今天为啥不在开始吹两句了,累到一句牛逼不想吹...... 步骤1: 设置头部,"Conten ...