比较结构为List的HashMap值



我有一个HashMap结构像

{a=[test], b=[test, test2]}

我想比较条目值(test, test2)彼此,如果任何条目与另一个条目具有相同的值,我需要返回它们的键和相等的值。我想在Java中实现。

简单地反转Map,使用您的值作为原始键的分组键,其中值重复。

Map<KeysClass, List<ValuesClass>> original = ....
Map<ValuesClass, List<KeysClass>> keysGroupedPerValue = new HashMap<>();
for(Entry<KeysClass, List<ValuesClass> entry : original) {
for(ValuesClass value : entry.getValue()) {
List<KeysClass> keysHavingValue = keysGroupedPerValue.computeIfAbsent(value, val -> new ArrayList<>());
keysHavingValues.add(entry.getKey());
}
}

使用StreamCollectorapi也有更优雅的解决方案。

最新更新