【Java】List集合遍历分析

白色玫瑰 程序猿

时间: 2023-07-11 阅读: 1 字数:3293

{}
在 Java 中,我们应当坚持使用迭代器iterator或者forEach循环遍历 List ,因为它俩总能根据不同...(实际上是先有了 iterator ,然后 Java 官方为了优化代码复杂度,又推出了基于 iterator 的 forEach 循环).........

在 Java 中,我们应当坚持使用迭代器iterator或者forEach循环遍历 List ,因为它俩总能根据不同的类型提供最快的遍历速度。(实际上是先有了 iterator ,然后 Java 官方为了优化代码复杂度,又推出了基于 iterator 的 forEach 循环,它俩是同一种方式的不同写法)

本文将测试ArrayList集合与LinkedList集合在三种循环下的遍历速度,样本容量大小为 10000 :

for循环 forEach循环 iterator迭代器

测试代码范例

public class Dog {
   public static void main(String[] args) {
      List<Object> list = new ArrayList<>();
      for (int i = 0; i < 10000; i++) {
         list.add(i);
      }
      // 1
      long start1 = System.currentTimeMillis();
      for (int i = 0; i < list.size(); i++) {
         System.out.print(list.get(i));
      }
      long end1 = System.currentTimeMillis();
      // 2
      long start2 = System.currentTimeMillis();
      for (Object obj : list) {
         System.out.print(obj);
      }
      long end2 = System.currentTimeMillis();
      // 3
      long start3 = System.currentTimeMillis();
      Iterator<Object> iterator = list.iterator();
      while (iterator.hasNext()){
         System.out.print(iterator.next());
      }
      long end3 = System.currentTimeMillis();
      // 时间
      System.out.println();
      System.out.println("for耗时:" + (end1 - start1)+" 毫秒");
      System.out.println("forEach耗时:" + (end2 - start2)+" 毫秒");
      System.out.println("iterator耗时:" + (end3 - start3)+" 毫秒");
   }
}

一、结果:ArrayList

for耗时:13 毫秒
forEach耗时:10 毫秒
iterator耗时:10 毫秒

二、结果:LinkedList

for耗时:67 毫秒
forEach耗时:11 毫秒
iterator耗时:11 毫秒

三、结论

  可以看到,使用forEach循环和使用iterator迭代器的效果是一样的,实际上编译器会把 forEach 循环编译成 for + iterator 循环;同时单纯的for循环的性能较差,所以我们应当坚持使用iterator迭代器或者forEach循环遍历 List。

编译前

List<String> list = List.of("Apple", "Orange", "Pear");
for (String s : list) {
   System.out.println(s);
}

编译后

List<String> list = List.of("Apple", "Orange", "Pear");
for (Iterator<String> it = list.iterator(); it.hasNext(); ) {
    String s = it.next();
    System.out.println(s);
}

原文地址:https://blog.csdn.net/qq_35760825/article/details/125359162?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168904453316800211527462%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168904453316800211527462&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-21-125359162-null-null.142^v88^koosearch_v1,239^v2^insert_chatgpt&utm_term=java%E4%BC%98%E5%8C%96

本文章网址:https://www.sjxi.cn/detil/52ba93af339e4a7f9b3ee372fb46f505

最新评论

当前未登陆哦
登陆后才可评论哦

湘ICP备2021009447号