迭代器
package Map;
import java.util.HashMap;
import java.util.Set;
public class demo {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("a",1);
map.put("b",2);
map.put("c",3);
Set<String> keys = map.keySet();
for (String key : keys) {
System.out.println(map.get(key));//1 2 3
}
}
}
如果此时在遍历过程中对数据进行删除,会报错

因为删除后还是两条数据,但Set不知道,它还认为有3条数据,它还会继续遍历。
for循环是不能在循环时对数据进行添加和删除的,因为会改变数据的个数
要想在循环中改变数据的数目,可以用迭代器
package Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class demo {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("a",1);
map.put("b",2);
map.put("c",3);
Set<String> keys = map.keySet();
Iterator<String> iterator = keys.iterator();
//hasNext方法用于判断是否有下一条数据
while(iterator.hasNext()){
String key = iterator.next();
System.out.println(map.get(key));//1 2 3
}
}
}
package Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class demo {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("a",1);
map.put("b",2);
map.put("c",3);
Set<String> keys = map.keySet();
Iterator<String> iterator = keys.iterator();
//hasNext方法用于判断是否有下一条数据
while(iterator.hasNext()){
String key = iterator.next();
if("b".equals(key)){
iterator.remove();//迭代器删除该条数据
//iterator.remove("c");
// 迭代器只能删除当前的数据,无法删除其他的数据,如循环的下一条数据"c"
// 防止非法删除
}
System.out.println(map.get(key));
}
}
}

浙公网安备 33010602011771号