我可以以某种方式从java中的Collections.Min / Collections.Max中排除或过滤掉一个值吗?

问题描述 投票:0回答:2

所以我使用Collections.min在ArrayList中查找一个对象,该对象包含其中一个元素中的最小整数值。基本上比较列表中的每个元素。

现在,列表中有一些对象不包含值,因此我必须将它们设置为-1。

如何排除列表中int值为-1的所有元素,我不知道如何应用if语句。

temp = Collections.min(PollutionDatasetList, Comparator.comparingInt(Measurement::getLevel));

PollutionDatesetList - 我的清单

测量 - 我的课程包含在列表中

GetLevel - 我正在比较的整数值。

java if-statement collections integer comparator
2个回答
2
投票

只需使用流API:

 list.stream()
     .filter(m -> m.getLevel() >= 0)
     .min(Comparator.comparingInt(Measurement::getLevel))

getLevel()更好的回归类型是OptionalInt。这将迫使每个处理级别的代码考虑测量没有级别的情况,从而避免错误。


0
投票

由于您使用Collections.min找到了最小值,因此将没有值的对象的值设置为某个大数而不是-1表示Integer.MAX_VALUE,这样就不会再造成任何问题。我不确定这个更改是否会对程序的其他模块造成任何问题,但它肯定会解决这个问题的Collections.min。

© www.soinside.com 2019 - 2024. All rights reserved.