【发布时间】:2016-12-19 15:49:22
【问题描述】:
我正在尝试比较 <String, Integer> 类型的两个 hashmaps 并尝试根据第一个映射中整数的最小值和第二个映射中的最大值来获得结果。
例如:
hashmap1:
Key value
A 2
B 2
C 4
hashmap2:
key value
A 10
B 20
C 5
结果将是"B 2"
【问题讨论】:
我正在尝试比较 <String, Integer> 类型的两个 hashmaps 并尝试根据第一个映射中整数的最小值和第二个映射中的最大值来获得结果。
例如:
hashmap1:
Key value
A 2
B 2
C 4
hashmap2:
key value
A 10
B 20
C 5
结果将是"B 2"
【问题讨论】:
这是使用流 API 的另一种方法:
String key = map.entrySet().stream()
.min((o1, o2) -> o1.getValue() - o2.getValue()).get().getKey();
虽然我承认它很冗长。
key 存储与最小值对应的键。
【讨论】:
你需要比较它们两者以获得最大值吗?如果你跑了这样的事情
Map.Entry<Foo, Bar> maxEntry = null;
for (Map.Entry<Foo, Bar> entry : map.entrySet())
{
if (maxEntry == null || entry.getValue().compareTo(maxEntry.getValue()) > 0)
{
maxEntry = entry;
}
}
您将获得两者中的最大值,如果您必须获得两者中的最大值,然后再进行比较。
【讨论】: