1.使用 Iterator 接口遍历集合元素
-
Iterator对象称为迭代器(设计模式的一种),主要用于遍历 Collection 集合中的元素。
-
所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象。
-
Iterator 仅用于遍历集合,Iterator 本身并不提供承装对象的能力。如果需要创建 Iterator 对象,则必须有一个被迭代的集合。
2. Iterator使用的dome
public class TestIterator {
//面试题:
public void testfor3() {
String [] str = new String[] {"AA","BB","EE","DD"};
for(String s : str) {
s = "MM";//s为新定义的局部变量
}
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);//打印结果为:
}
}
public void testfor2() {
String [] str = new String[] {"AA","BB","EE","DD"};
for (int i = 0; i < str.length; i++) {
str[i] = i + "";
}
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);//打印结果为:
}
}
//*-****************************************
//使用增强for循环实现数组的遍历
@Test
public void testfor1() {
String [] str = new String[] {"AA","BB","EE","DD"};
for(String s : str) {
System.out.println(s);
}
}
//使用增强for循环实现集合的遍历
@Test
public void testfor() {
Collection coll = new ArrayList();
coll.add(123);
coll.add(new String("AA"));
coll.add("john");
coll.add("BBB");
coll.add(44);
for(Object obj: coll) {
System.out.println(obj);
}
}
//正确的写法:使用迭代器Iterator实现集合的遍历
@Test
public void test1() {
Collection coll = new ArrayList();
coll.add(123);
coll.add(new String("AA"));
coll.add("john");
coll.add("BBB");
coll.add(44);
Iterator i = coll.iterator();
while(i.hasNext()) {
System.out.println(i.next());
}
}
//错误的写法
public void test2() {
Collection coll = new ArrayList();
coll.add(123);
coll.add(new String("AA"));
coll.add("john");
coll.add("BBB");
coll.add(44);
Iterator i = coll.iterator();
while(i.next()!=null) {
//java.util.NoSuchElementExeption
System.out.println(i.next());
}
}
}
3.Iterator遍历的两个方法的指向图
- i.hasNext()一开始指向的地址,集合的第一个元素的地址。
- i.next()指向的地址为i.hasNext()的下一个地址
- 当程序开始执行的时候,i.hasNext()指向的地址会依次往下, i.next()指向的地址也会依次往下