我有一个 LinkedHashMap 的实例,使用 if-else 语句,我想从 LinkedHashMap 中删除一个键值并打印出其余的。但是,IDE 没有打印出其余的键,而是打印出了很多我不理解的信息。有人可以帮帮我吗?在此先感谢您的帮助!
Map<String, Integer> msi1 = new LinkedHashMap<>();
msi1.put("hello", 1);
msi1.put("world", 2);
msi1.put("morning", 3);
for (Iterator<String> it = msi1.keySet().iterator(); it.hasNext();) {
if (it.next().equals("world")) {
it.remove();
} else {
System.out.println(it);
}
}
java.util.LinkedHashMap$LinkedKeyIterator@15db9742
java.util.LinkedHashMap$LinkedKeyIterator@15db9742
最佳答案
如果您打算在迭代时从 Map
中删除元素,那么使用迭代器是正确的。但是,您试图直接打印出迭代器对象,这是没有意义的。在下面的代码片段中,我改为打印出不匹配条目的键和值。
Map<String, Integer> msi1 = new LinkedHashMap<>();
msi1.put("hello", 1);
msi1.put("world", 2);
msi1.put("morning", 3);
Iterator<Map.Entry<String, Integer>> it = msi1.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, Integer> entry = it.next();
if (entry.getKey().equals("world")) {
it.remove();
}
else {
System.out.println("Found entry: " + entry.getKey() + " -> " + entry.getValue());
}
}
关于java - 从 LinkedHashMap 实例中删除一个键值后无法打印出其余键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36075012/