您的位置:首页 > 编程语言 > Java开发

Java Iterator和增强for循环 for each详解

2015-07-23 21:30 495 查看
Iterator是Java中的一个迭代器接口(Interface),用来提供标准的Java迭代器

Iterator支持泛型因为集合(Collection)类可以装入的类型是不确定的,从集合中取出的都是Object类型,加入泛型,就是告诉编译器确定要装入的对象类型,取值时就无需强制转换了。

for each 是 Java 5 中新增的一个循环结构,本质上是一个Iterator,特点是可以用来遍历集合元素而不用考虑集合下标。

综合实例:

package net.csdn.shf4715;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class IteratorDemo {
/**
* Iterator和for each的综合例子
* @param args
*/
public static void main(String[] args) {
//创建一个list并设置泛型为Emp类型
List<Emp> list = new ArrayList<Emp>();
//添加Emp实例到list
list.add(new Emp("one"));
list.add(new Emp("*"));
list.add(new Emp("two"));
list.add(new Emp("*"));
list.add(new Emp("three"));
list.add(new Emp("*"));
//使用list的iterator()方法返回一个迭代器
Iterator<Emp> it = list.iterator();
//hasNext() Iterator中的一个方法,判断是否有下一个元素
while(it.hasNext()) {
//如果Emp对象中的name的值是*则删除该元素
if("*".equals(it.next().getName())){
it.remove();
}
}
System.out.println(list);
//增强for循环用于遍历集合,但不适合对集合进行删除操作
//但是可以进行修改
for(Emp e : list) {
list.set(1,new Emp("1"));
System.out.print(e.getName()+" ");
}
}
}
/**
* Emp类
* @author haydn
*
*/
class Emp {
private String name;

public Emp(String name) {
super();
this.name = name;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String toString() {
return name;
}
}


运行结果:

[one, two, three]

one 1 three

Iterator和 for each的区别:

1.for each 不能删除集合元素

2.Iterator 只能使用自身的remove()方法来删除元素,不能用集合的删除操作

3.ArrayList里,for循环较快,LinkedList里,使用iterator较快

总结:这两种遍历方式各有特色,优势各有不同,在处理不同情景下的数据,利用好它们的长处能使程序运行的更好。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: