我有一个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
答案 0 :(得分:3)
如果您打算在迭代时从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());
}
}