一、创建集合并添加元素(从末尾位置添加)

package ZangJie7;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List; public class LinkedListDemo {
/***
* ArrayList 底层是数据实现的,是连续的空间{0,1,2,3,4,5,6},如果从最后的位置增除的话,用ArrayList比较快,
* 用ArrayList增删元素时,会造成原素位空缺,其它已经存在的元素会向前或者向后移动,影响程序效率。 * LinkedList 如果从最开始的位置删除的话,用LinkedList 比较快
* LinkedList是使用索引存储元素,采用的是手拉手的形式,增删时不会带来元素的移动,所以效率比ArrayList要快。
*/ public static void main(String[] args) {
List <Integer> alist = new ArrayList<Integer>();
List<Integer> llist = new LinkedList<Integer>();
runDuration(alist,"ArrayList");
runDuration(llist,"LinkedList");
}
public static void runDuration(List<Integer> list,String listType){
System.out.println("\n duration方法的开始,用的集合是:"+listType);
//记录开始时当前时间
long startTime = System.currentTimeMillis();
for(int i = 0;i<100000;i++) {
list.add(i);
}
//记录结束时当前时间
long endTime = System.currentTimeMillis();
//持续时间
long duration = endTime-startTime;
System.out.println("集合"+listType+"用时为"+duration+"毫秒");
} }

二、计算集合大小

package ZangJie7;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List; public class LinkedListDemo {
/***
* ArrayList 底层是数据实现的,是连续的空间{0,1,2,3,4,5,6},如果从最后的位置增除的话,用ArrayList比较快,
* 用ArrayList增删元素时,会造成原素位空缺,其它已经存在的元素会向前或者向后移动,影响程序效率。 * LinkedList 如果从最开始的位置删除的话,用LinkedList 比较快
* LinkedList是使用索引存储元素,采用的是手拉手的形式,增删时不会带来元素的移动,所以效率比ArrayList要快。
*/ public static void main(String[] args) {
List <Integer> alist = new ArrayList<Integer>();
List<Integer> llist = new LinkedList<Integer>();
runDuration(alist,"ArrayList");
runDuration(llist,"LinkedList");
}
public static void runDuration(List<Integer> list,String listType){
System.out.println("\n duration方法的开始,用的集合是:"+listType);
for(int i = 0;i<100000;i++) {
list.add(i);
}
//获取集合大小
int size = list.size();
//添加元素
int elementToAdd = size + 10000; System.out.println("第一次添加的元素个数为:"+elementToAdd); //记录开始时当前时间
long startTime = System.currentTimeMillis();
for(int i = size;i<elementToAdd;i++) {
list.add(i);
}
System.out.println("第一次添加的元素个数为:"+list.size());
//记录结束时当前时间
long endTime = System.currentTimeMillis();
//持续时间
long duration = endTime-startTime;
System.out.println("集合"+listType+"用时为"+duration+"毫秒");
}
}

从运行结果看,LinkedLst比ArrayList运行耗时更少,效率更高。

三、在指定索引位上加元素

package ZangJie7;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List; public class LinkedListDemo {
/***
* ArrayList 底层是数据实现的,是连续的空间{0,1,2,3,4,5,6},如果从最后的位置增除的话,用ArrayList比较快,
* 用ArrayList增删元素时,会造成原素位空缺,其它已经存在的元素会向前或者向后移动,影响程序效率。 * LinkedList 如果从最开始的位置删除的话,用LinkedList 比较快
* LinkedList是使用索引存储元素,采用的是手拉手的形式,增删时不会带来元素的移动,所以效率比ArrayList要快。
*/ public static void main(String[] args) {
List <Integer> alist = new ArrayList<Integer>();
List<Integer> llist = new LinkedList<Integer>();
runDuration(alist,"ArrayList");
runDuration(llist,"LinkedList");
}
public static void runDuration(List<Integer> list,String listType){
System.out.println("\n duration方法的开始,用的集合是:"+listType);
for(int i = 0;i<100000;i++) {
list.add(i);
}
//获取集合大小
int size = list.size();
//添加元素
int elementToAdd = size + 10000; System.out.println("第一次添加的元素个数为:"+elementToAdd); //记录开始时当前时间
long startTime = System.currentTimeMillis();
for(int i = size;i<elementToAdd;i++) {
// list.add(i);
list.add(0, i);
}
System.out.println("第一次添加的元素个数为:"+list.size());
//记录结束时当前时间
long endTime = System.currentTimeMillis();
//持续时间
long duration = endTime-startTime;
System.out.println("集合"+listType+"用时为"+duration+"毫秒");
}
}

从运行结果看,在指定位置插入值时,LinkedLst比ArrayList运行耗时要少,效率更高。

四、从尾部删减元素

package ZangJie7;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List; public class LinkedListDemo {
/***
* ArrayList 底层是数据实现的,是连续的空间{0,1,2,3,4,5,6},如果从最后的位置增除的话,用ArrayList比较快,
* 用ArrayList增删元素时,会造成原素位空缺,其它已经存在的元素会向前或者向后移动,影响程序效率。 * LinkedList 如果从最开始的位置删除的话,用LinkedList 比较快
* LinkedList是使用索引存储元素,采用的是手拉手的形式,增删时不会带来元素的移动,所以效率比ArrayList要快。
*/ public static void main(String[] args) {
List <Integer> alist = new ArrayList<Integer>();
List<Integer> llist = new LinkedList<Integer>();
runDuration(alist,"ArrayList");
runDuration(llist,"LinkedList");
}
public static void runDuration(List<Integer> list,String listType){
System.out.println("\n duration方法的开始,用的集合是:"+listType);
for(int i = 0;i<100000;i++) {
list.add(i);
}
//获取集合大小
int size = list.size();
//添加元素
int elementToAdd = size + 10000; System.out.println("第一次添加的元素个数为:"+elementToAdd); //记录开始时当前时间
long startTime = System.currentTimeMillis();
/*for(int i = size;i<elementToAdd;i++) {
// list.add(i);
list.add(0, i);
}*/ for(int i = 90000;i<92000;i++) {
list.remove(i);
}
System.out.println("第一次添加的元素个数为:"+list.size());
//记录结束时当前时间
long endTime = System.currentTimeMillis();
//持续时间
long duration = endTime-startTime;
System.out.println("集合"+listType+"用时为"+duration+"毫秒");
}
}

从运行结果看,从尾部开始删减元素,ArrayList比LinkedLst运行耗时要少,效率更高。

五、从首部开始删减元素

package ZangJie7;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List; public class LinkedListDemo {
/***
* ArrayList 底层是数据实现的,是连续的空间{0,1,2,3,4,5,6},如果从最后的位置增除的话,用ArrayList比较快,
* 用ArrayList增删元素时,会造成原素位空缺,其它已经存在的元素会向前或者向后移动,影响程序效率。 * LinkedList 如果从最开始的位置删除的话,用LinkedList 比较快
* LinkedList是使用索引存储元素,采用的是手拉手的形式,增删时不会带来元素的移动,所以效率比ArrayList要快。
*/ public static void main(String[] args) {
List <Integer> alist = new ArrayList<Integer>();
List<Integer> llist = new LinkedList<Integer>();
runDuration(alist,"ArrayList");
runDuration(llist,"LinkedList");
}
public static void runDuration(List<Integer> list,String listType){
System.out.println("\n duration方法的开始,用的集合是:"+listType);
for(int i = 0;i<100000;i++) {
list.add(i);
}
//获取集合大小
int size = list.size();
//添加元素
int elementToAdd = size + 10000; System.out.println("第一次添加的元素个数为:"+elementToAdd); //记录开始时当前时间
long startTime = System.currentTimeMillis();
//添加元素
/*for(int i = size;i<elementToAdd;i++) {
// list.add(i);
list.add(0, i);
}*/ /*//从尾部开始删减元素添加元素
for(int i = 90000;i<92000;i++) {
list.remove(i);
}*/ //从首部开始删减元素添加元素
for(int i = 0;i<100;i++) {
list.remove(i);
}
System.out.println("第一次添加的元素个数为:"+list.size());
//记录结束时当前时间
long endTime = System.currentTimeMillis();
//持续时间
long duration = endTime-startTime;
System.out.println("集合"+listType+"用时为"+duration+"毫秒");
}
}

从运行结果看,从首部开始删减原始,LinkedLst比ArrayList运行耗时要少,效率更高。

章节七、3-ArrayList和LinkedList对比的更多相关文章

  1. 基于Java的ArrayList和LinkedList的实现与总结

    一.定义MyList接口,包含列表常见方法: import java.util.Iterator; /** * 线性表(列表)的接口定义 */ public interface MyList<T ...

  2. Java数据结构之表的增删对比---ArrayList与LinkedList之一

    一.Java_Collections表的实现 与c不同Java已经实现并封装了现成的表数据结构,顺序表以及链表. 1.ArrayList是基于数组的实现,因此具有的特点是:1.有索引值方便查找,对于g ...

  3. ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转)

    主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论. 通过本文你可以 ...

  4. ArrayList和LinkedList的几种循环遍历方式及性能对比分析

    最新最准确内容建议直接访问原文:ArrayList和LinkedList的几种循环遍历方式及性能对比分析 主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性 ...

  5. ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转载)

    原文地址: http://www.trinea.cn/android/arraylist-linkedlist-loop-performance/ 原文地址: http://www.trinea.cn ...

  6. ArrayList和LinkedList遍历方式及性能对比分析

    ArrayList和LinkedList的几种循环遍历方式及性能对比分析 主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayLis ...

  7. 【转】ArrayList和LinkedList的几种循环遍历方式及性能对比分析

    原文网址:http://www.trinea.cn/android/arraylist-linkedlist-loop-performance/ 主要介绍ArrayList和LinkedList这两种 ...

  8. Java 集合 ArrayList和LinkedList的几种循环遍历方式及性能对比分析 [ 转载 ]

    Java 集合 ArrayList和LinkedList的几种循环遍历方式及性能对比分析 @author Trinea 原文链接:http://www.trinea.cn/android/arrayl ...

  9. (转)ArrayList和LinkedList的几种循环遍历方式及性能对比分析

    主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论. 通过本文你可以 ...

随机推荐

  1. Linux编程 15 文件权限(用户管理 useradd,userdel,usermod,passwd,chpasswd,chsh, chfn,chage)

    一. 概述  在上一篇中讲到了与用户账户有关的二个文件passwd和shadow,以及useradd工具的介绍.这篇接着讲useradd+参数,删除用户,修改用户的演示. 1. 删除用户userdel ...

  2. 搭建 MobileNet-SSD 开发环境并使用 VOC 数据集训练 TensorFlow 模型

    原文地址:搭建 MobileNet-SSD 开发环境并使用 VOC 数据集训练 TensorFlow 模型 0x00 环境 OS: Ubuntu 1810 x64 Anaconda: 4.6.12 P ...

  3. MySQL GTID你知多少

    MySQL在5.6的版本推出了GTID复制,相比传统的复制,GTID复制对于运维更加友好,这个事务是谁产⽣,产⽣多少事务,⾮常直接的标识出来,当然GTID也有限制,对于什么是GTID可以参考我之前的文 ...

  4. Win32之隐藏DLL隐藏模块技术

    Win32之隐藏DLL隐藏模块技术 这一讲涉及到windows底层技术.跟汇编内容. 我们才可以实现模块隐藏(也称为DLL隐藏) 一丶API反汇编勾引兴趣 我们都用过Windows的进程跟线程API  ...

  5. Apache Solr 实现去掉重复的搜索结果

    https://lucene.apache.org/solr/guide/7_2/collapse-and-expand-results.html#collapsing-query-parser 对应 ...

  6. 分享几个实用的Chrome扩展程序

    前言 吐槽一下自己,最近变懒了,博客已经变成月更了.这次分享几个自己工作这几年下来,平常用的比较多的几个谷歌浏览器的扩展程序. AdBlock 最受欢迎的 Chrome 扩展,拥有超过 6000 万用 ...

  7. Mybatis的SqlSession运行原理

    前言 SqlSession是Mybatis最重要的构建之一,可以简单的认为Mybatis一系列的配置目的是生成类似 JDBC生成的Connection对象的SqlSession对象,这样才能与数据库开 ...

  8. python下载安装BeautifulSoup库

    python下载安装BeautifulSoup库 1.下载https://www.crummy.com/software/BeautifulSoup/bs4/download/4.5/ 2.解压到解压 ...

  9. 南大算法设计与分析课程OJ答案代码(5)--割点与桥和任务调度问题

    问题 A: 割点与桥 时间限制: 1 Sec  内存限制: 5 MB提交: 475  解决: 34提交 状态 算法问答 题目描述 给出一个无向连通图,找到所有的割点和桥 输入 第一行:点的个数,如果点 ...

  10. 记录.net使用ueditor富文本编辑器

    UEditor是什么 最近在在项目的时候使用到了百度的富文本编辑器.官网有详细的操作流程文档.这里我只是记录项目中常用到的一些事件.以便日后可以方便查询. UEditor是百度的一个javascrip ...