我有一个名为Test的类。这个类有一个名为getNumber的方法,它返回一个int值。使用数据流获取最大值地图
public class Test{
.
.
.
.
public int getNumber(){
return number;
}
}
另外我有一个HashMap,其中的关键是一个长和值是一个测试对象。
Map<Long, Test> map = new HashMap<Long, Test>();
我想使用Stream Line代码打印密钥并获取具有最大getNumber的getNumber。
我可以通过以下线路
final Comparator<Test> comp = (p1, p2) -> Integer.compare(p1.getNumber(), p2.getNumber());
map.entrySet().stream().map(m -> m.getValue())
.max(comp).ifPresent(d -> System.out.println(d.getNumber()));
打印的最大数量不过我的问题是我怎么能返回的最大金额的关键?我可以在一轮中使用流吗?
它像一个魅力。非常感谢 –
没有理由转向昂贵的'.sorted(...).findFirst()'。你仍然可以在OP代码中使用'max',唯一的技巧就是不执行'map'步骤:'map.entrySet().stream().max(Map.Entry.comparingByValue(Comparator.comparingInt(Test :: getNumber))).get()' – Holger
@Holger再一次,你对我错了,编辑 – Eugene