java - 迭代引用对象列表

标签 java performance optimization well-formed

有人可以建议我选择哪个选项以及为什么吗?

List<MyObject> list =  new ArrayList<MyObject>();
// insert some objects for it

1). for(int i = 0 ; i < list.size() ; i ++ ) {
       System.out.println(list.get(i).getAttribute1());
       System.out.println(list.get(i).getAttribute2());
    }

2). for(int i = 0 ; i < list.size() ; i ++ ) {
        MyObject obj = list.get(i);
        System.out.println(obj.getAttribute1());
        System.out.println(obj.getAttribute2());
    }

是的,我知道...它们会产生相同的结果,但我想知道哪个选项更有效、格式良好、使用广泛,为什么?我只是注意到第一个选项会比另一个选项写得更长。有什么建议吗?

最佳答案

选项:1 Get 在列表中使用了两次,这是一个额外的过程

选项:2 仅使用一次 get,从而减少了进程。所以这比选项更好:1

在这两个选项中,将为 for 循环的每次迭代计算 list.size()。为了避免这种情况,您可以在迭代开始之前计算长度,

for (int i = 0, length = list.size(); i < length; i ++) {
   // your code here

}

有效的方法是使用 foreach 循环,

for (MyObject obj: list) {
  System.out.println(obj.getAttribute1);
}

关于java - 迭代引用对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21569662/

相关文章:

java - 如何通过WebStart部署JDBC客户端应用程序?

java - Spring Boot 运行良好,但不是它的 Jar?

iphone - 此代码是否适用于iTunes购买的AAC格式?

algorithm - 给定多种类型的资源和每个任务的特定资源组合,最大限度地利用资源

sql - DB2 中 WHERE 子句求值顺序的优化

java - 如何解耦事件驱动模块?

java - 当html文件保存在本地时,如何构造HtmlPage以使用WebClient进行解析?

java - 如何保持代码整洁有序?

c# - 用于加速电子邮件发送应用程序的多线程

PHP - 获取另一个网站内容并解析该内容的最快方式