我有一个哈希图,其中一些键指向相同的值。我想找到所有相等的值并打印相应的键。
这是我拥有的当前代码:
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());
}
}
}
当前代码将重复项两次添加到列表中,但它也将每个键添加一次。
谢谢。
如果您想要一个除流式API之外的解决方案;
public static void duplicatedValuesMap() {
Map<String, String> map = new HashMap<>();
map.put("hello", "0123");
map.put("hola", "0123");
map.put("kosta", "0123 test");
map.put("da", "03");
map.put("notda", "013");
map.put("twins2", "01");
map.put("twins22", "01");
HashMap<String, List<String>> valueToKeyMapCounter = new HashMap<>();
for (Map.Entry<String, String> entry : map.entrySet()) {
if (valueToKeyMapCounter.containsKey(entry.getValue())) {
valueToKeyMapCounter.get(entry.getValue()).add(entry.getKey());
} else {
List<String> keys = new ArrayList<>();
keys.add(entry.getKey());
valueToKeyMapCounter.put(entry.getValue(), keys);
}
}
for (Map.Entry<String, List<String>> counterEntry : valueToKeyMapCounter.entrySet()) {
if (counterEntry.getValue().size() > 1) {
System.out.println("Duplicated Value:" + counterEntry.getKey() + " for Keys:" + counterEntry.getValue());
}
}
}
构建<代码>地图
例子
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");
map.entrySet().stream()
.collect(Collectors.groupingBy(Entry::getValue,
Collectors.mapping(Entry::getKey, Collectors.toList())))
.entrySet().stream()
.filter(e -> e.getValue().size() > 1)
.forEach(System.out::println);
输出
01=[twins22, twins2]
0123=[kosta, hello, hola]
如果没有filter()
,结果将是:
01=[twins22, twins2]
013=[notda]
03=[da]
0123=[kosta, hello, hola]
您可以使用流以这种方式检索重复项:
List<String> myList = map.stream()
.filter(n -> Collections.frequency(map.values(), n) > 1)
.collect(Collectors.toList());
然后,你可以打印出来:
myList.foreach(System.out::println);
问题内容: 我有一些键指向相同值的哈希图。我想找到所有相等的值并打印相应的键。 这是我目前的代码: 当前代码将重复项两次添加到列表中,但是也会将每个键一次添加一次。 谢谢。 问题答案: 您可以使用流以这种方式检索重复项: 然后,您可以使用以下命令将其打印出来:
问题内容: 我正在尝试修复这段代码,该代码是从具有车牌号和车主列表(该格式)的哈希图进行打印的。我试图通过printOwners()仅打印出所有者;但是我不能不打印重复的东西。 我已经玩了一段时间,但似乎无法跳过重复项。 这是我的代码: 问题答案: 要删除重复项,请使用: 或者使用Java 8 和方法:
问题是如何使用方法在HashMap中pritn值=1的图书?在代码中,ive删除了数组中的书籍,这样代码就可以更短。
我试图调用一个值在jsp页面,但有错误和错误说 出现意外错误(类型=内部服务器错误,状态=500)。对于输入字符串:“res” 我的代码; 这就是我从控制器设置hashmap的方法 同样的东西印在java页面上 如何在jsp页面中打印hashmap值?
我的log4j.xml有以下内容: 即使在设置了这些配置之后,我仍然没有看到包含值的精确的select查询。我还有一种感觉,日志记录级别实际上不起作用,因为我没有看到任何来自Hibernate的过度日志记录。此外,我多次构建maven只是为了确保构建了新属性。这是日志的外观:
我希望在下面的代码中输出一个文本而不是: ie我希望输出为