博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ArrayList 和linkedList 插入比较
阅读量:5283 次
发布时间:2019-06-14

本文共 2060 字,大约阅读时间需要 6 分钟。

 

 

从学Java开始, 就一直大脑记着  arrayList 底层是数组 ,查询快, 插入慢, 有移动的动作。linkedList 底层链表, 插入快 查询慢,今天写了例子跑了跑, 果然。

 

 

public class ListTest {    public static void main(String[] args)throws Exception {        Thread thread = new Thread(()->{            addArraylist();        });        Thread thread2 = new Thread(()->{            addLinkedList();        });        thread.start();        thread.join();        thread2.start();        thread2.join();    }    private static void addArraylist(){        ArrayList
arrayList = new ArrayList(); long begin2 = System.currentTimeMillis(); for(int j= 0 ;j<1000000;j++){ arrayList.add(j+"==="); } System.out.println("arraylist花费了:"+(System.currentTimeMillis()-begin2)+"毫秒"); System.out.println(arrayList.size()); } private static void addLinkedList(){ LinkedList
linkedList = new LinkedList(); long begin = System.currentTimeMillis(); for( int i=0 ;i<1000000;i++){ linkedList.add(i+"==="); } System.out.println("linkedList花费了:"+(System.currentTimeMillis()-begin)+"毫秒"); System.out.println(linkedList.size()); }}

=============输出结构是:

数据量比较少时 ,看的不明显, 当数据在100000以内 ,结果差不多, 大于100 万, 感觉到执行时间差距很大了。心里有个底。

==================================================================================

说下两种集合的用途:

数组, 开发中主要是为了查询快,这个用的最多, 比如从数据库分页查询 数据, 需要 遍历 。

链表 Linkedlist  用作 堆栈(比如虚拟机栈 , 大量的变量作用,指令操作, 基本都链表结构), 队列 比较多, 比如 线程池的 队列啊, 插入删除快。

====================================================================================

 

从 JVM堆内存分析  效率为啥差别这么大。

为啥数组插入慢,数组有个默认大小,比如16 ,数组在初始化的时候在 内存中会被分配一块连续的内存,第一个元素进来。问角标 0 ,你存东西了吗, 没有, 我就进去啦。后面的元素在插入的时候,要询问多次,【比如第一万个元素, 要询问9999次, 你这位置有人不?】 时间复杂度为O(n),数组的大小;

 

而  链表不是这样, 并不是一段连续的内存,第一个元素进来, 记下自己的 【value =“张三” ,PRE =null(元素的 hash值) ,NEXT = null】,

第二个元素进来, 拿到上一个元素的值,先把张三的 next 改成自己  ,【value =“张三” ,PRE =null(元素的 hash值) ,NEXT = 5654654654(“李四的地址值”)】

然后把自己加进去了,类似于【value=“李四,PRE=343434("张三”),next=null】。

插入的时间复杂度为O(1),就很快了。 不用移动指针, 就特别 爽。

 

转载于:https://www.cnblogs.com/zgghb/p/9588493.html

你可能感兴趣的文章
MySQL通过frm 和 ibd 恢复数据过程
查看>>
SRS源码——Listener
查看>>
Java面向对象抽象类案例分析
查看>>
对SPI、IIC、IIS、UART、CAN、SDIO、GPIO的解释
查看>>
Thymeleaf模板格式化LocalDatetime时间格式
查看>>
庖丁解“学生信息管理系统”
查看>>
Pyltp使用
查看>>
其他ip无法访问Yii的gii,配置ip就可以
查看>>
php做的一个简易爬虫
查看>>
x的x次幂的值为10,求x的近似值
查看>>
jquery获取html元素的绝对位置和相对位置的方法
查看>>
ios中webservice报文的拼接
查看>>
Power BI 报告的评论服务支持移动设备
查看>>
ACdream 1068
查看>>
HDU 2665 Kth number
查看>>
记叙在人生路上对你影响最大的三位老师
查看>>
002.大数据第二天
查看>>
python装饰器
查看>>
树上的路径
查看>>
系统平均负载
查看>>