ArrayList和LinkedList查询速度问题

例子:测试ArrayList和LinkedList在检索数据的时候性能对比时出现了问题,按理来说在ArrayList读取数据是会比LinkedList快的,但我设置了50W的数据,得出结果不明显。。望解答~

public class Test_ArrayList_LinkedList02 {
    static final int N = 500000;
    // 计算查询所需的值
    static long readList(List list) {
        long start = System.currentTimeMillis();
        for (int i = 0; i < list.size(); i++) {
            //模拟查询,只循环什么都不做
        }
        return System.currentTimeMillis() - start;
    }

    // 给集合里添加大量值
    @SuppressWarnings("unchecked")
    static List addList(List list) {
        Object o = new Object();
        for (int i = 0; i < N; i++) {
            list.add(0, o);
        }
        return list;
    }

    @SuppressWarnings("rawtypes")
    public static void main(String[] args) {
        ArrayList arraylist = (ArrayList) addList(new ArrayList());
        LinkedList linkedlist = (LinkedList) addList(new LinkedList());
        System.out.println("ArrayList查找" + arraylist.size() + "条耗时:"+ readList(arraylist));
        System.out.println("LinkedList查找" + linkedlist.size() + "条耗时:"+ readList(linkedlist));
    }
}

效果
图片描述

阅读 5.6k
9 个回答

for (int i = 0; i < list.size(); i++) {

     Object obj =list.get(i);
     //模拟查询,只循环什么都不做
  }
  
 你在模拟查询里, 真的查询一下看看就发现区别了,例如list.get(i);500000条LinkedList都跑不动了
新手上路,请多包涵

两个的区别在于数据的随机查找和顺序查找的快慢,你可以list.get(250000)多测试几遍就知道了

新手上路,请多包涵

你的readList方法并没有对list做任何读写操作,当然没区别

数据小的时候 没啥区别。而且 也不一定 linkedlist 比 arraylist慢,也看情况的。

你的模拟里面什么都没做呀,试着get看看

你都没有操作表,哪来的性能对比啊

...什么都没作怎么对比...
ArrayList的查询快指的是随机访问,你查询list中某个特定位置的值,就能看出效果来了。
比如 get(25000)

你的写法和这个有什么区别?

for(int i = 0 i < 500000; i++) {

} 

一个空循环你就得出了两者的性能差异?既然是比较那就应该是存值和取值啊?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题