public class DemoCa {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
Person p = null;
for (int i = 0; i < 1000000; i++) {
p = new Person("" + i, 18, 5000);
personList.add(p);
}
long start1 = System.nanoTime();
for (int i = 0; i < personList.size(); i++) {
String name = personList.get(i).getName();
int salary = personList.get(i).getSalary();
int age = personList.get(i).getAge();
}
long end1 = System.nanoTime();
System.out.println("for耗时:" + (end1 - start1));
long start2 = System.nanoTime();
int i = 0;
while (i < personList.size()){
String name = personList.get(i).getName();
int salary = personList.get(i).getSalary();
int age = personList.get(i).getAge();
i++;
}
long end2 = System.nanoTime();
System.out.println("while耗时:" + (end2 - start2));
}
}
大致结果
百万级以下while比较划算
百万级的时候两者的效率不相上下
千万级的时候for比较划算
亿级的时候电脑堆栈报错(内存溢出)
其实也不一定跟电脑线程有关