java之list循环优化(一)

白色玫瑰 程序猿

时间: 2023-05-22 阅读: 1 字数:2347

{}
将for (int i = 0; i (); i++)改为int j = list.size(); for (int i = 0; i ; i++),当数据量很大时list.size()消耗的额外性能也是可观的。 public class ListDemo { public static void main(String[] args) { ...

目录

需要将for (int i = 0; i < list.size(); i++)改为int j = list.size(); for (int i = 0; i < j; i++)吗?

public class ListDemo {
   public static void main(String[] args) {
      List<Integer> list = new ArrayList<>();
      int x = 10000000;
      while (x > 0) {
         list.add(x);
         x--;
      }
      test1(list);
      test2(list);
   }

   /**
    * 优化前
    *
    * @param list
    */
   public static void test1(List<Integer> list) {
      long before = System.currentTimeMillis();
      int count = 0;
      for (int i = 0; i < list.size(); i++) { 
         count = count + i;
      }
      long after = System.currentTimeMillis();
      System.out.println(after - before);
   }

   /**
    * 优化后
    *
    * @param list
    */
   public static void test2(List<Integer> list) {
      long before = System.currentTimeMillis();
      int count = 0;
      int j = list.size();
      for (int i = 0; i < j; i++) {
         count = count + i;
      }
      long after = System.currentTimeMillis();
      System.out.println(after - before);
   }
}

根据打印结果简单的对比下,发现虽然优化后会比优化前快,但是并没有很大的差别,这是因为List的size()方法返回的是List内部维护的尺寸变量size,代码如下: public int size() { return size; } 并不是重新计算,当然相比于每次调用size()方法,优化后的方法还是要快一点,对于数据量大的列表还是推荐优化后的方法。

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

本文章网址:https://www.sjxi.cn/detil/2d14055546b84cfcb00b602466005d0e
最新评论
当前未登陆哦
登陆后才可评论哦

湘ICP备2021009447号

×

(穷逼博主)在线接单

QQ: 1164453243

邮箱: abcdsjx@126.com

前端项目代做
前后端分离
Python 爬虫脚本
Java 后台开发
各种脚本编写
服务器搭建
个人博客搭建
Web 应用开发
Chrome 插件编写
Bug 修复