概述
昨儿晚上宿舍讨论到迭代器的问题,今天有时间我就写了个小东西看了看两者的效率差别。发现效率差的还真大。
先上代码。代码很简单。
主程序测试类:TestArrayList.java
package com.test.arrayList;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class TestArrayList {
private static final int COUNT =700000;
private static List persons = new ArrayList();
public static void main(String args[]) {
init();
System.out.println("For遍历测试:" + testFor()+ "微秒");
System.out.println("迭代器遍历测试:" +testIterator()+ "微秒");
System.out.println("有人很喜欢的foreach测试:" +testForEach()+ "微秒");
}
public static void init() {
Person person = null;
for (int i = 0; i < COUNT; i++) {
person = new Person("第" + i + "个", i, i * 100);
persons.add(person);
}
}
public static long testIterator() {
long start = System.nanoTime();
Person person = null;
for (Iterator it = persons.iterator(); it.hasNext();) {
person = it.next();
}
return (System.nanoTime() - start) / (1000);
}
public static long testFor() {
long start = System.nanoTime();
Person person = null;
for (int i = 0; i < persons.size(); i++) {
person = persons.get(i);
}
return (System.nanoTime() - start) / (1000);
}
public static long testForEach() {
long start = System.nanoTime();
Person person = null;
for (Person p : persons) {
person = p;
}
return (System.nanoTime() - start) / (1000);
}
}
实体Person类。放到容器里面的。
Person.java
package com.test.arrayList;
public class Person {
private String name;
private int age;
private double money;
public Person(String name, int age, double money) {
this.name = name;
this.age = age;
this.money = money;
}
getter();
setter();
}
开始测试:
结果附上图:
看到差别了吧。上面的测试是万级别的测试。一般效率影响不大。
要多说的是foreach效率和迭代器效率差不多。
最后
以上就是无限战斗机为你收集整理的java迭代器和for循环,迭代器和For循环的效率比较 | 学步园的全部内容,希望文章能够帮你解决java迭代器和for循环,迭代器和For循环的效率比较 | 学步园所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复