先看如下代码:
import java.util.*;
public class For {
public static void main(String args[]) {
Set<String> set = new HashSet<String>();
String x = "a";
for (int i = 0; i < 10; i++) {
set.add(x+i);
}
/常用迭代遍历方法
Iterator<String> it = set.iterator();
while (it.hasNext()) {
String str = it.next();
System.out.println(str);
}
/增强for循环
for (String str : set) {
System.out.println(str);
}
}
}
看了之后什么感觉?是不是觉得增强for循环就不是少写了两行代码吗?这就叫增强?
好吧...我查了些资料,拿出增强for循环的真正的作用
import java.util.*;
public class For {
public static void main(String args[]) {
Set<Object> set = new HashSet<Object>();
String x = "a";
for (int i = 0; i < 10; i++) {
set.add(x + i);
}
int y = 0;
for (int i = 0; i < 10; i++) {
set.add(y + i);
}
// for循环遍历:
for (Object obj : set) {
if (obj instanceof Integer) {
int aa = (Integer) obj;
System.out.println(aa);
} else if (obj instanceof String) {
String aa = (String) obj;
System.out.println(aa);
}
}
}
}
现在只有两个数据类型在里面,如果有N种呢?你怎么遍历?增强for循环的威力就出来了.
当然,弊端也有:
在遍历 集合过程中,不能对集合本身进行操作
for (String str : set) {
set.remove(str);//错误!
}
这时候他就鸡肋了,问题就来了,为什么不能对集合进行操作呢?这就必须追究其底层了