消息关闭
    暂无新消息!

遍历list效率问题

问题作者 : 最爱EVO2017-08-26发布
 public void test(List<RecordLoan> recordLoanList){
        for (int i = 0; i < recordLoanList.size(); i++) {
            Map map = new HashMap();
            map.put("1",recordLoanList.get(i).getGid());
            map.put("2",recordLoanList.get(i).getGid());
            map.put("3",recordLoanList.get(i).getGid());
            map.put("4",recordLoanList.get(i).getGid());
            map.put("5",recordLoanList.get(i).getGid());
        }
    }


public void test(List<RecordLoan> recordLoanList){
        for (int i = 0; i < recordLoanList.size(); i++) {
            RecordLoan recordLoan = recordLoanList.get(i);
            Map map = new HashMap();
            map.put("1",recordLoan.getGid());
            map.put("2",recordLoan.getGid());
            map.put("3",recordLoan.getGid());
            map.put("4",recordLoan.getGid());
            map.put("5",recordLoan.getGid());
        }
    }

这两种哪个效率高 性能好

8个回答

︿ 3
第二种,
第一中一个value值的产生,都生成过两个对象.2*4=8个对象.第二个则是1+4 =5个对象,一次循环少创建三个对象
︿ 2
第一种效率高,第二种循环中多了
 RecordLoan recordLoan = recordLoanList.get(i); 每次都要创建一个新对象。

第一种会直接从recordLoanList.get(i).getGid() 复制一个放入map。第二种则是从recordLoan 中复制

两种的开销差异主要是 多生成了一个  RecordLoan recordLoan
recordLoanList.get(i) 带来的差异只是一两个CPU周期,基本可以忽略不计
︿ 1
第二种每次循环不是得创建recordLoan 新对象吗 这种是不是很好资源
︿ 1
第二种效率高,
第一种每次执行一个循环比第二种多调用四次 recordLoanList.get(i)
public void test(List<RecordLoan> recordLoanList){
        for (int i = 0; i < recordLoanList.size(); i++) {
            RecordLoan recordLoan = recordLoanList.get(i);
            Map map = new HashMap();
            map.put("1",recordLoan.getGid());
            map.put("2",recordLoan.getGid());
            map.put("3",recordLoan.getGid());
            map.put("4",recordLoan.getGid());
            map.put("5",recordLoan.getGid());
        }
    }

这个方法如果被程序中的其他方法调用,没有任何意思,因为没有返回值也没有改变传参的值,也没有改变成员变量的值
︿ 0
第二种吧,看上去简洁,然后计算机在识别的时候,也会加快找到的速度