无法删除java.util.Map.Entry中的所有元素

时间:2015-07-21 03:13:57

标签: java hashmap

在Entry Map中的所有元素中,我只能删除至少位置的一个元素。谁能解释一下是什么原因?

Ps:我认为在EntryMap中使用HashMap存在问题

这是完整的代码:

import java.util.HashMap;

import java.util.Map;

import java.util.Map.Entry;

import java.util.Scanner;

public class Neti {

    static Map<Integer, String> mm = new HashMap<>();

    static void removeEntry(Integer val) {

        for (Entry<Integer, String> entry : mm.entrySet()) {

            if (entry.getKey() == val) {

                mm.remove(val);

                break;
            }
        }
    }

    public static void main(String[] args) {
         mm.put(123, "one");
         mm.put(1234, "two");
         mm.put(12345, "three");
         mm.put(123456, "four");

        Scanner scanner = new Scanner(System.in);
        System.out.println("We have: " + mm);
        for (;;) {
            System.out.print("Number to remove: ");

            int val = scanner.nextInt();

            removeEntry(val);
            System.out.println("Map entries are: " + mm.toString());
        }
    }

}

1 个答案:

答案 0 :(得分:3)

您的整个removeEntry方法可以替换为单个语句 - mm.remove(val)。没有必要迭代entrySet来找到您想要删除的密钥,即使有,使用==作为参考类型通常也是错误的。