San*_*ndy -1 java collections iterator hashmap set
我有这样的地图,
Map<String, Map<String, Set<String>>> sampleMap = new Map<String, Map<String, Set<String>>>();
Run Code Online (Sandbox Code Playgroud)
这个地图中的数据就是这样的,
sampleMap={2014={A=[1, 2], B=[3], 2015={A=[1,2], B=[1,2], 2016={A=[1,2], B=[3,4]}};
Run Code Online (Sandbox Code Playgroud)
我想根据这个输入从地图中删除密钥:List<String> filter;
这样的值,
filterArray : [2014, 2015]
Run Code Online (Sandbox Code Playgroud)
即,首先逐个遍历arraylist值,验证arraylist值是否与Hashmap中的任何键匹配.
即,我总是希望只保留地图中匹配的键,与传递的输入值进行比较.
在这种情况下,因为我有这样的arraylist值,[2014,2015],
2014,2015键只能在我的地图中.所以,
删除前的数据:
sampleMap={2014={A=[1, 2], B=[3], 2015={A=[1,2], B=[1,2], 2016={A=[1,2], B=[3,4]}};
Run Code Online (Sandbox Code Playgroud)
移动后的数据:
sampleMap={2014={A=[1, 2], B=[3], 2015={A=[1,2], B=[1,2]}};
Run Code Online (Sandbox Code Playgroud)
我试过这种方式,但我只是想知道这是正确的approch,还是容易出现任何异常?
Iterator<Map.Entry<String , Map<String, Set<String>>>> iter = sampleMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<String , Map<String, Set<String>>> entry = iter.next();
logger.info("Keys : " + entry.getKey());
if (filterArray.equalsIgnoreCase(entry.getKey())) {
iter.remove();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
191 次 |
最近记录: |