小编典典

如何在哈希图中打印具有重复值的键?

java

我有一些键指向相同值的哈希图。我想找到所有相等的值并打印相应的键。

这是我目前的代码:

    Map<String, String> map = new HashMap<>();

    map.put("hello", "0123");
    map.put("hola", "0123");
    map.put("kosta", "0123");
    map.put("da", "03");
    map.put("notda", "013");

    map.put("twins2", "01");
    map.put("twins22", "01");


    List<String> myList = new ArrayList<>();

    for (Map.Entry<String, String> entry : map.entrySet()) {
       for (Map.Entry<String, String> entry2 : map.entrySet()){
           if (entry.getValue().equals(entry2.getValue()))
           {
               myList.add(entry.getKey());
           }
       }

    }

当前代码将重复项两次添加到列表中,但是也会将每个键一次添加一次。

谢谢。


阅读 230

收藏
2020-11-26

共1个答案

小编典典

您可以使用流以这种方式检索重复项:

  List<String> myList = map.stream()
     .filter(n -> Collections.frequency(map.values(), n) > 1)
     .collect(Collectors.toList());

然后,您可以使用以下命令将其打印出来:

myList.foreach(System.out::println);
2020-11-26