1.Iterator接口方法

前面章节学习了Collection接口、Set接口和List接口,它们的实现类都没有提供边里集合的数据元素的方法,Iterator为集合而生,是java语言解决遍历集合的一个工具。它提供一种方法访问集合中各个元素,而不暴露该集合的内部实现细节。

Collection接口的Iterator()方法返回一个Iterator对象,通过Iterator接口的两个方法即可实现对集合元素的遍历。下面列举了Iterator接口的三个方法。

  • boolean hasNext()

判断是否存在下一个可访问的数据元素。

  • Object next()

返回要访问的下一个数据元素。

  • void remove()

从迭代器指向的Collection集合中移除迭代器返回的最后一个数据元素。

2.Iterator的使用

接下来通过“租车系统”讲解集合中Iterator的使用。

代码如下:

public class Theme{
	//属性
	int id=0;
	String title;
	String remark;
	//构造器
	public Theme(int id,String title,String remark){
	this.id=id;
	this.title=title;
	this.remark=remark;
	}
	//get和set方法
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getRemark() {
		return remark;
	}
	public void setRemark(String remark) {
		this.remark = remark;
	}
	
}

使用Iterator遍历:

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
 
public class Test{
 
	public static void main(String[] args) {
		//存储数据的地址
		Set set = new HashSet<>();
		//存储数据
		set.add(new Theme(1,"标题1","简介1"));
		set.add(new Theme(2,"标题2","简介1"));
		
		//遍历数据
		Iterator iter = set.iterator();
		while(iter.hasNext()){
			Theme theme = (Theme)iter.next();
			System.out.println(theme.getId()+theme.getTitle()+theme.getRemark());
		}
	}
}

输出结果:

java for 循环对像_增强for循环

3.增强for循环

从JDK1.5开始,提供了另一种形式的for循环,这就是增强for循环,或称为foreach循环。借助增强for循环可以用更简单的方式来遍历数组和Collection集合中的对象。

下面是用增强for循环与传统for循环做个比较。

举一个非常简单的案例,一个数组或者集合里存放了四个学生的姓名字符串,分别用传统for循环和增强for循环,逐个显示学生姓名。

例如:

import java.util.*;
public class TestResult{
public static void main(String[] args){
String[] stuArr={"王云","刘静涛","南天华","雷静"};
System.out.println("===========传统for循环===========");
//传统for循环遍历
for(int i=0;i<stuArr.length;i++){
System.out.println(stuArr[i]);
}
System.out.println("==========增强for循环============");
//增强for循环遍历
for(String str:stuArr){
System.out.println(str);
}
Set nameSet=new HashSet();
nameSet.add("王云");
nameSet.add("刘静涛");
nameSet.add("南天华");
nameSet.add("雷静");
System.out.println("===========迭代器遍历===========");
//迭代器遍历
Iterator it=nameSet.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
System.out.println("===========增强for循环===========");
//增强for循环遍历
for(Object o:nameSet){
System.out.println((String)o);
}
}
}

输出结果是:

java for 循环对像_增强for循环_02

可以看出JDK1.5的增强for循环使得代码短小精悍,在遍历数组和集合的时候更加方便。

但增强for循环在使用时,也有下面一些局限性,使用时需注意:

  1. 在用传统for循环处理数组时,可以通过数组下标进行一些程序控制,例如可以通过数组下标每次循环之后加2的方式,间隔输出数组中的元素。而增强for循环不能获得下标位置,类似的功能需要用其他方式实现。
  2. 如果使用增强for循环操作集合,无法实现对集合元素的删除,还需要调用Iterator迭代器的remove()方法才能完成。