Set<Map.Entry<K,V>> entrySet()返回此映射中包含的映射关系的 set 视图。返回的 set 中的每个元素都是一个 Map.Entry。该 set 受映射支持,所以对映射的改变可在此 set 中反映出来,反之亦然。如果修改映射的同时正在对该 set 进行迭代(除了通过迭代器自己的 remove 操作,或者通过在迭代器返回的映射项上执行 setValue 操作外),则迭代结果是不明确的。set 支持通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作实现元素移除,即从映射中移除相应的映射关系。它不支持 add 或 addAll 操作
楼上说的很对的:
再给你一个例子,你执行一下,看看就明白了:
public class MapTest {
public static void main(String[] args) {
Map<String, Student> map = new HashMap<String, Student>();
Student s1 = new Student("许文强", 20);
Student s2 = new Student("丁力", 30);
Student s3 = new Student("冯程程", 25);
map.put("sh002", s1);
map.put("sh003", s2);
map.put("sh001", s3);
// 遍历
Set<String> keySet = map.keySet();
Iterator<String> it = keySet.iterator();
while (it.hasNext()) {
String key = it.next();
Student value = map.get(key);
System.out.println(key + "***" + value.getName() + "***"
+ value.getAge());
}
System.out.println("*******************");
Set<Map.Entry<String, Student>> setMap = map.entrySet();
Iterator<Map.Entry<String, Student>> it2 = setMap.iterator();
while (it2.hasNext()) {
Map.Entry<String, Student> me = it2.next();
String key = me.getKey();
Student value = me.getValue();
System.out.println(key + "***" + value.getName() + "***"
+ value.getAge()); }
}
}
|