ArrayList 与 LinkedList 增加数据与查询数据的效率对比 淡淡的烟草味﹌ 2022-12-10 14:34 188阅读 0赞 ArrayList 与 LinkedList 都是list的实现 类,前者是基于数组实现,具有查询快增删慢的特点,后者是基于双向链表实现,具有查询慢增删快的特点,对于查询与增删来说,二者正好相反,那二者到底相差多少 下面我们来测试下, 先上代码,所有代码如下 package com.test.list; import java.util.*; /** * @ClassName ListDemo * @Description TODO * @Date 2018/11/20/02015:29 * @Version 1.0 **/ public class ListDemo { public static void main(String[] args) { int baseSize = 10000; int baseGet = 100; // addListXiaoLv(2000*baseSize); // addLinkListXiaoLv(2000*baseSize); // getListXiaoLv(2000*baseSize,baseGet); // getLinkListXiaoLv(2000*baseSize,baseGet); } /** * 增加list数据 * @param size */ public static void addListXiaoLv(int size){ List list = new ArrayList(size); Long listStart = System.currentTimeMillis(); for (int i =0;i<size;i++){ list.add(i); } Long listEnd = System.currentTimeMillis(); System.out.println(" ArrayList 增加时间" +(listEnd-listStart)); } /** * 增加LinkList的数据 * @param size */ public static void addLinkListXiaoLv(int size){ List list = new LinkedList(); Long listStart = System.currentTimeMillis(); for (int i =0;i<size;i++){ list.add(i); } Long listEnd = System.currentTimeMillis(); System.out.println(" LinkedList 增加时间" +(listEnd-listStart)); } /** * 随机获取 list中的数据 * @param size * @param get */ public static void getListXiaoLv(int size,int get){ List list = new ArrayList(); for (int i =0;i<size;i++){ list.add(i); } List getlist = new ArrayList(); Long listStart = System.currentTimeMillis(); for (int i = 0; i<get;i++){ getlist.add(list.get(new Random().nextInt(size))); } Long listEnd = System.currentTimeMillis(); System.out.println(" ArrayList 获取时间" +(listEnd-listStart)); System.out.println("list .size" +list.size()); System.out.println("getlist .size" +getlist.size()); } /** * 随机获取 LinkList中的数据 * @param size * @param get */ public static void getLinkListXiaoLv(int size,int get){ List list = new LinkedList(); List getlist = new LinkedList(); for (int i =0;i<size;i++){ list.add(i); } Long listStart = System.currentTimeMillis(); for (int i =0;i<get;i++){ getlist.add(list.get(new Random().nextInt(size))); } Long listEnd = System.currentTimeMillis(); System.out.println(" LinkedList 获取时间" +(listEnd-listStart)); System.out.println("list .size" +list.size()); System.out.println("getlist .size" +getlist.size()); } } 数据增加以万为基本单位,分别有 万,10万,100万,1000万,2000万 由于ArrayList可以初始size,并分别以初始化和未初始化做了性能对比 查询数据分别从万,10万,100万,1000万,2000万 中随机获取100条 具体耗时与性能比较如下, **注: 所有结果统计单位为毫秒,性能对比有正负之分,正为性能提升,负为性能降低** <table> <tbody> <tr> <td style="border-color:#000000;vertical-align:middle;width:87pt;"> </td> <td colspan="6" style="border-color:#000000;text-align:center;vertical-align:middle;width:480pt;"><span style="color:#000000;">增加数据</span></td> </tr> <tr> <td style="border-color:#000000;vertical-align:middle;"> </td> <td colspan="3" style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">ArrayList</span></td> <td colspan="3" style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">LinkedList</span></td> </tr> <tr> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">数据量</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;width:75.75pt;"><span style="color:#000000;"> 未初化size(变量A)</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;width:76.5pt;"><span style="color:#000000;">初始化size(变量B)</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;width:82.5pt;"><span style="color:#000000;">初始化的性能提升((A-B)/A * 100%)</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;width:71.25pt;"><span style="color:#000000;">不能初始化(变量C)</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;width:92.25pt;"><span style="color:#000000;">与未size的arrayList比((A-C)/A * 100%)</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;width:81.75pt;"><span style="color:#000000;">与已size的arrayList比((B-C)/B * 100%)</span></td> </tr> <tr> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">1万</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">2</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">2</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">0</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">2</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">0</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">0</span></td> </tr> <tr> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">10万</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">8</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">7</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">12%</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">8</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">0</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">-15%</span></td> </tr> <tr> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">100万</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">32</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">22</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">30%</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">42</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">-30%</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">-90%</span></td> </tr> <tr> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">1000万</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">400</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">257</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">36%</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">6891</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">-1600%</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">-2500%</span></td> </tr> <tr> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">2000万</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">4873</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">5635</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">-16%</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">15827</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">-200%</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">-180%</span></td> </tr> <tr> <td style="border-color:#000000;vertical-align:middle;"> </td> <td style="border-color:#000000;vertical-align:middle;"> </td> <td style="border-color:#000000;vertical-align:middle;"> </td> <td style="border-color:#000000;vertical-align:middle;"> </td> <td style="border-color:#000000;vertical-align:middle;"> </td> <td style="border-color:#000000;vertical-align:middle;"> </td> <td style="border-color:#000000;vertical-align:middle;"> </td> </tr> <tr> <td style="border-color:#000000;vertical-align:middle;"> </td> <td colspan="6" style="border-color:#000000;text-align:center;vertical-align:middle;width:480pt;"><span style="color:#000000;">查询数据(随机查询100)</span></td> </tr> <tr> <td style="border-color:#000000;vertical-align:middle;"> </td> <td style="border-color:#000000;vertical-align:middle;"> </td> <td style="border-color:#000000;vertical-align:middle;"> </td> <td style="border-color:#000000;vertical-align:middle;"> </td> <td style="border-color:#000000;vertical-align:middle;"> </td> <td style="border-color:#000000;vertical-align:middle;"> </td> <td style="border-color:#000000;vertical-align:middle;"> </td> </tr> <tr> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">1万</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">1</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">1</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">0</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">4</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">-300%</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">-300%</span></td> </tr> <tr> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">10万</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">1</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">1</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">0</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">13</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">-1200%</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">-1200%</span></td> </tr> <tr> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">100万</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">1</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">1</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">0</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">104</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">-10300%</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">-10300%</span></td> </tr> <tr> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">1000万</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">1</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">1</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">0</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">1865</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">-186400%</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">-186400%</span></td> </tr> <tr> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">2000万</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">0</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">0</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">0</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">4908</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">.......</span></td> <td style="border-color:#000000;text-align:center;vertical-align:middle;"><span style="color:#000000;">.......</span></td> </tr> </tbody> </table> 根据文中开始的总结,要想查询快用Arrylist,增加快用LinkedList,但是实际测试结果,无论做什么,都Arrylist快
相关 Java中ArrayList与LinkedList的性能对比 在Java中,ArrayList和LinkedList都是用来存储集合的动态数据结构。它们各有优缺点,适用于不同的场景。 1. ArrayList: - **操作**: 查询 落日映苍穹つ/ 2024年10月21日 08:51/ 0 赞/ 31 阅读
相关 Java中ArrayList与LinkedList的性能对比 在Java中,ArrayList和LinkedList都是用来存储和操作元素的容器。它们各有特点,性能上也存在差异。 1. **插入/删除位置**: - ArrayLi 朴灿烈づ我的快乐病毒、/ 2024年10月09日 04:24/ 0 赞/ 31 阅读
相关 Java集合框架:ArrayList与LinkedList的对比 在Java集合框架中,ArrayList和LinkedList是两种常见的动态数组。它们各有优缺点,适用于不同的场景: 1. **ArrayList**: - **特点**: r囧r小猫/ 2024年09月17日 10:33/ 0 赞/ 71 阅读
相关 Java集合框架:ArrayList与LinkedList的对比 在Java集合框架中,ArrayList和LinkedList是两种常用的动态数组实现方式。它们各自有特点,适用于不同的场景。 1. ArrayList: - **基于索引操 一时失言乱红尘/ 2024年09月12日 09:39/ 0 赞/ 78 阅读
相关 Java集合框架:ArrayList与LinkedList对比 在Java的集合框架中,ArrayList和LinkedList是两种常用的动态数组。它们各自有特定的应用场景和特性。 1. ArrayList: - **特点**: ゞ 浴缸里的玫瑰/ 2024年09月10日 11:36/ 0 赞/ 92 阅读
相关 ArrayList 与 LinkedList 增加数据与查询数据的效率对比 ArrayList 与 LinkedList 都是list的实现 类,前者是基于数组实现,具有查询快增删慢的特点,后者是基于双向链表实现,具有查询慢增删 淡淡的烟草味﹌/ 2022年12月10日 14:34/ 0 赞/ 189 阅读
相关 java linkedlist性能,Java ArrayList 与 LinkedList性能对比 ArrayList是如何插入、删除数据的? ![a16e51f66e92][] image.png 1.当插入一个data的时候会先检查数组是否需要扩容。 扩容的机制并 男娘i/ 2022年11月18日 05:49/ 0 赞/ 183 阅读
相关 ArrayList与LinkedList的效率 public static void main(String[] args) { LinkedList<String> linkedList = - 日理万妓/ 2022年06月10日 01:52/ 0 赞/ 283 阅读
相关 LinkedList和ArrayList在尾部插入数据效率对比 转载于:[https://blog.csdn.net/qq\_34144916/article/details/81154528][https_blog.csdn.net_qq 亦凉/ 2022年03月18日 07:14/ 0 赞/ 256 阅读
还没有评论,来说两句吧...