ssb*_*cse 149 java dictionary
我正在HashMap调用testMap哪个包含String, String.
HashMap<String, String> testMap = new HashMap<String, String>();
Run Code Online (Sandbox Code Playgroud)
迭代地图时,if value与指定的字符串匹配,我需要从地图中删除该键.
即
for(Map.Entry<String, String> entry : testMap.entrySet()) {
if(entry.getValue().equalsIgnoreCase("Sample")) {
testMap.remove(entry.getKey());
}
}
Run Code Online (Sandbox Code Playgroud)
testMap包含"Sample"但我无法从中删除密钥HashMap.
而是得到错误:
"Exception in thread "main" java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
at java.util.HashMap$EntryIterator.next(Unknown Source)
at java.util.HashMap$EntryIterator.next(Unknown Source)"
Run Code Online (Sandbox Code Playgroud)
Tom*_*Tom 309
尝试:
Iterator<Map.Entry<String,String>> iter = testMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<String,String> entry = iter.next();
if("Sample".equalsIgnoreCase(entry.getValue())){
iter.remove();
}
}
Run Code Online (Sandbox Code Playgroud)
使用Java 1.8及更高版本,您只需一行即可完成上述操作:
testMap.entrySet().removeIf(entry -> "Sample".equalsIgnoreCase(entry.getValue()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
142639 次 |
| 最近记录: |