目录
Iterator迭代器
Iterator 对象称为迭代器,主要用于遍历 Collection 集合中的元素
Iterator 仅用于遍历集合,其本身不提供承装对象的能力。如果需要创建 Iterator 对象,则必须有一个被迭代的集合
内部方法:hasNext()和 next()
import org.junit.Test;
import java.util.*;
public class CollectionTest {
@Test
public void test1(){
Collection coll = new ArrayList();
coll.add("AA");
coll.add(123);
coll.add(false);
coll.add("DD");
Iterator iterator = coll.iterator();
// for (int i = 0; i < coll.size(); i++) {
// System.out.println(iterator.next());
// }
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
>>> AA
123
false
DD
foreach循环
JDK 5.0 新增了 foreach 循环,用于遍历集合、数组
import org.junit.Test;
import java.util.*;
public class CollectionTest {
@Test
public void test1() {
Collection coll = new ArrayList();
coll.add("AA");
coll.add(123);
coll.add(false);
coll.add("DD");
Iterator iterator = coll.iterator();
//for(集合元素的类型 局部变量 : 集合对象) 内部仍然使用了迭代器
for(Object obj : coll){
System.out.println(obj);
}
System.out.println("**********");
int[] arr = new int[]{1,2,3,4,5};
//for(数组元素的类型 局部变量 : 数组对象)
for (int i : arr){
System.out.println(i);
}
}
}
>>> AA
123
false
DD
**********
1
2
3
4
5
有关foreach的面试题
import org.junit.Test;
public class foreachTest {
@Test
public void test(){
String[] arr = new String[]{"AA","AA","AA"};
for (String s : arr){
s = "BB";
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
>>> AA
AA
AA
为什么没有都赋值为 “BB” 呢,是因为这时相当于把 arr [i] 赋值给 s,然后 s = “BB”,我们只修改了 s 的值,并没有对 arr [i] 做操作,所以集合的值并没有改变