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 遍历使用迭代器遍历

 

posted @ 2021-05-16 17:43  山阴路的秋天  阅读(80)  评论(0编辑  收藏  举报