java - 从 LinkedHashMap 实例中删除一个键值后无法打印出其余键值

标签 java dictionary iterator

我有一个 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/

相关文章:

java - JOptionPane 并从输入中获取文本

python - 将索引处的元素组合在字典内的列表中

python - 为什么我没有收到字典的属性 '__getitem__' 错误?

python - 当字典值为列表时,如何在 Python 中将字典转换为 pandas DataFrame?

java - 从通用列表java中删除项目?

generics - 使用创建容器、向其中添加项、然后遍历项的通用函数,值不会存在足够长的时间

android - 从数组列表中删除对象 - 并发修改异常

java - Quartz 调度程序不在 dropwizard 应用程序中执行 SQL 查询

java - 正则表达式在括号之间获取字符串

java - 如何在Windows 7中以管理员身份复制