从学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<String > 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 <String >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 用作 堆栈(比如虚拟机栈 , 大量的变量作用,指令操作, 基本都链表结构), 队列 比较多, 比如 线程池的 队列啊, 插入删除快。
扫描二维码关注公众号,回复:
3055364 查看本文章