您的位置:首页 > 编程语言 > Java开发

java集合之map中keySet方法

2016-08-17 11:03 447 查看
今天用到了map中keySet方法,出现了一个错误,记录下来。

出现错误原因:没有注意到map中keySet方法返回的是一个Set集合镜像,所以在修改该Set集合镜像时,map中所对应的键值对也会相应的被修改。

HashMap中[b][b]keySet方法源码:[/b][/b]





测试类:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
* map的keySet()方法
*
* @author feige
*/
public class RemoveSet {

public static void main(String[] args) {
Map<Integer, String> testMap = new HashMap<Integer, String>();
testMap.put(1, "一");
testMap.put(2, "二");
testMap.put(3, "三");
testMap.put(4, "四");
testMap.put(5, "五");
Set<Integer> testKey = testMap.keySet();
Iterator<Integer> it = testKey.iterator();
System.out.println("移除前map的大小为:" + testMap.size());
System.out.println("移除前的遍历");
while (it.hasNext()) {
Integer testInt = it.next();
System.out.println(testInt);
// 移除key为3的键
if (testInt == 3) {
it.remove();
}
}
System.out.println("移除了key为3的键");
System.out.println("移除后map的大小为:" + testMap.size());
System.out.println("移除后的遍历");
it = testKey.iterator();
while (it.hasNext()) {
Integer testInt = it.next();
System.out.println(testInt);
}
}
}
测试结果为:





可见[b][b]map中keySet方法[/b]返回的是map中key的镜像,对[b][b]keySet方法[/b]返回的[/b]Set的修改就是对map中key的修改。
[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  集合 Map keySet HashMap