Java Iterator和增强for循环 for each详解
2015-07-23 21:30
495 查看
Iterator是Java中的一个迭代器接口(Interface),用来提供标准的Java迭代器
Iterator支持泛型因为集合(Collection)类可以装入的类型是不确定的,从集合中取出的都是Object类型,加入泛型,就是告诉编译器确定要装入的对象类型,取值时就无需强制转换了。
for each 是 Java 5 中新增的一个循环结构,本质上是一个Iterator,特点是可以用来遍历集合元素而不用考虑集合下标。
综合实例:
运行结果:
[one, two, three]
one 1 three
Iterator和 for each的区别:
1.for each 不能删除集合元素
2.Iterator 只能使用自身的remove()方法来删除元素,不能用集合的删除操作
3.ArrayList里,for循环较快,LinkedList里,使用iterator较快
总结:这两种遍历方式各有特色,优势各有不同,在处理不同情景下的数据,利用好它们的长处能使程序运行的更好。
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较快
总结:这两种遍历方式各有特色,优势各有不同,在处理不同情景下的数据,利用好它们的长处能使程序运行的更好。
相关文章推荐
- 如何利用MyEclipse将Java工程导出jar包
- JavaBean的一个小例子
- 2015第30周四Java日志组件
- Java练习题(一)
- DateUtils.java
- 关于javaSocket中 Software caused connection abort: recv failed问题
- Spring AOP 详解
- jdk环境变量的配置
- 解决java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
- 03 JAVA 数组补充 拷贝、序列化
- win7中如何完全卸载已装的JDK
- Java 语言环境配置
- Junit手动/自动加载spring配置文件
- Java错误提示----------
- java计算2个时间相差的天数
- Java中的数字基本运算和精度问题
- Thinking in Java 笔记(第四章 初始化和清除)
- Java的运行原理
- java常用的交互信息获取
- JAVA实现N皇后问题(回溯法)