概述
实体Person类
package com.zhang.loop;
public class Person {
private String a;
private int b;
public Person(String a, int b) {
super();
this.a = a;
this.b = b;
}
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
}
测试ArrayList的主程序
package com.zhang.loop;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class TestArrayList {
private static final int COUNT = 800000;
private static List<Person> persons = new ArrayList<Person>();
public static void main(String[] args) {
init();
System.out.println("for循环测试结果:"+testFor());
System.out.println("foreach循环测试结果:"+testForeach());
System.out.println("iterator循环测试结果:"+testIterator());
}
//初始化集合
public static void init(){
for (int i = 0; i <COUNT; i++) {
persons.add(new Person("第"+i+"个元素",i));
}
}
//for循环便利集合
public static long testFor(){
long start = System.nanoTime();
Person p = null;
for (int i = 0; i < persons.size(); i++) {
p = persons.get(i);
}
return (System.nanoTime()-start)/1000;
}
//foreach循环便利集合
public static long testForeach(){
long start = System.nanoTime();
Person p = null;
for (Person person : persons) {
p = person;
}
return (System.nanoTime()-start)/1000;
}
//iterator循环便利集合
public static long testIterator(){
long start = System.nanoTime();
Person p = null;
Iterator<Person> itreator = persons.iterator();
while(itreator.hasNext()){
p = itreator.next();
}
return (System.nanoTime()-start)/1000;
}
}
ArrayList测试结果
测试LinkedList的主程序
package com.zhang.loop;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class TestArrayList {
private static final int COUNT = 8000;
private static List<Person> persons = new LinkedList<Person>();
public static void main(String[] args) {
init();
System.out.println("for循环测试结果:"+testFor());
System.out.println("foreach循环测试结果:"+testForeach());
System.out.println("iterator循环测试结果:"+testIterator());
}
//初始化集合
public static void init(){
for (int i = 0; i <COUNT; i++) {
persons.add(new Person("第"+i+"个元素",i));
}
}
//for循环便利集合
public static long testFor(){
long start = System.nanoTime();
Person p = null;
for (int i = 0; i < persons.size(); i++) {
p = persons.get(i);
}
return (System.nanoTime()-start)/1000;
}
//foreach循环便利集合
public static long testForeach(){
long start = System.nanoTime();
Person p = null;
for (Person person : persons) {
p = person;
}
return (System.nanoTime()-start)/1000;
}
//iterator循环便利集合
public static long testIterator(){
long start = System.nanoTime();
Person p = null;
Iterator<Person> itreator = persons.iterator();
while(itreator.hasNext()){
p = itreator.next();
}
return (System.nanoTime()-start)/1000;
}
}
LinkedList测试结果:
记录的存取方式有两种:
一种是顺序存储(数组,ArrayList..)可以根据其下标找到对应的记录
另一种是链接存储(LinkedList..)链接存储(拿单链表为例)则必须找到其前一个记录的位置才能够找到本记录。
根据以上可以得到的结果是:for循环便于访问顺序存储的记录,而foreach和迭代器便于访问链接存储。
最后
以上就是聪慧夕阳为你收集整理的迭代器和for循环的效率比较的全部内容,希望文章能够帮你解决迭代器和for循环的效率比较所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复