我有一些键指向相同值的哈希图。我想找到所有相等的值并打印相应的键。
这是我目前的代码:
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()); } } }
当前代码将重复项两次添加到列表中,但是也会将每个键一次添加一次。
谢谢。
您可以使用流以这种方式检索重复项:
List<String> myList = map.stream() .filter(n -> Collections.frequency(map.values(), n) > 1) .collect(Collectors.toList());
然后,您可以使用以下命令将其打印出来:
myList.foreach(System.out::println);