List遍历方式选择

Posted 山阴路的秋天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了List遍历方式选择相关的知识,希望对你有一定的参考价值。

List 中ArrayList ,linkedList 两种列表分别进行 for循环遍历 和迭代器遍历比较,代码如下:

public class TraverseTest {

    private static long traverseByLoop(List list) {
        long startTime = System.currentTimeMillis();
        for (int i = 0; i < list.size(); i++) {
            list.get(i);
        }
        long endTime = System.currentTimeMillis();
        return endTime - startTime;
    }

    private static long traverseByIterator(List list) {
        long startTime = System.currentTimeMillis();
        for (Iterator it = list.iterator(); it.hasNext(); ) {
            it.next();
        }
        long endTime = System.currentTimeMillis();
        return endTime - startTime;
    }

    public static void main(String[] args) {
        List<String> arrayList = new ArrayList<>();
        for (int i = 0; i < 100000; i++) {
            arrayList.add("" + i);
        }
        long loopTime = traverseByLoop(arrayList);
        long iteratorTime = traverseByIterator(arrayList);
        System.out.println("for循环遍历时间:" + loopTime);
        System.out.println("iterator遍历时间:" + iteratorTime);

        List<String> linkedList = new LinkedList<>();
        for (int i = 0; i < 100000; i++) {
            linkedList.add("" + i);
        }
        loopTime = traverseByLoop(linkedList);
        iteratorTime = traverseByIterator(linkedList);
        System.out.println("for循环遍历时间:" + loopTime);
        System.out.println("iterator遍历时间:" + iteratorTime);
    }
}

测试结果:

for循环遍历时间:5
iterator遍历时间:7
for循环遍历时间:12786
iterator遍历时间:4

可以看出:ArrayList for循环和iterator 遍历结果相差不大 ,一般推荐使用for循环遍历; LinkedList 使用for循环遍历耗时时间长,linkedList 遍历使用迭代器遍历

 

以上是关于List遍历方式选择的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中以编程方式在片段之间导航?

Python 遍历List 方式总结

817. Linked List Components - LeetCode

java 各种循环遍历

List集合 遍历 四种方式(包含 Lambda 表达式遍历)

java中遍历集合的三种方式