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. leetcode — longest-common-prefix

    /** * Source : https://oj.leetcode.com/problems/longest-common-prefix/ * * Created by lverpeng on 20 ...

  2. k8s全栈监控之metrics-server和prometheus

    一.概述 使用metric-server收集数据给k8s集群内使用,如kubectl,hpa,scheduler等 使用prometheus-operator部署prometheus,存储监控数据 使 ...

  3. rem布局原理深度理解(以及em/vw/vh)

    一.前言 我们h5项目终端适配采用的是淘宝那套<Flexible实现手淘H5页面的终端适配>方案.主要原理是rem布局.最近和别人谈弹性布局原理,发现虽然已经使用了那套方案很久,但是自己对 ...

  4. 菜鸟入门【ASP.NET Core】9:RoutingMiddleware介绍以及MVC引入

    前言 前面介绍了使用app.Map来配置路由,但是对于一般不是特别大的项目来说,不使用Map来进行路由配置. 配置路由 我们首先需要在Startup.cs文件中的ConfigureServices方法 ...

  5. Java语言的简介

    Java语言的由来 Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称.由James Gosling和同事们共同研发,并在1 ...

  6. elasticsearch安装之各种坑

    我用的是centos6.5,安装elasticsearch5.2.0 首先不说了,安装JDK1.8,下载elasticsearch5.2.0 https://www.elastic.co/downlo ...

  7. 《Head First设计模式》批注系列(一)——观察者设计模式

    最近在读<Head First设计模式>一书,此系列会引用源书内容,但文章内容会更加直接,以及加入一些自己的理解. 观察者模式(有时又被称为模型-视图(View)模式.源-收听者(List ...

  8. Python 单例设计模式

    class Foo: def __init__(self, name, age): self.name = name self.age = age def show(self): print(self ...

  9. 【代码笔记】Web-HTML-简介

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  10. 【代码笔记】iOS-tableView滑动的范围函数

    //tableview滑动的范围 -(void)scrollViewDidScroll:(UIScrollView *)scrollView { myTableView.contentSize = C ...