我可以以某种方式从java中的Collections.Min / Collections.Max中排除或过滤掉一个值吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以以某种方式从java中的Collections.Min / Collections.Max中排除或过滤掉一个值吗?相关的知识,希望对你有一定的参考价值。
所以我使用Collections.min在ArrayList中查找一个对象,该对象包含其中一个元素中的最小整数值。基本上比较列表中的每个元素。
现在,列表中有一些对象不包含值,因此我必须将它们设置为-1。
如何排除列表中int值为-1的所有元素,我不知道如何应用if语句。
temp = Collections.min(PollutionDatasetList, Comparator.comparingInt(Measurement::getLevel));
PollutionDatesetList - 我的清单
测量 - 我的课程包含在列表中
GetLevel - 我正在比较的整数值。
答案
只需使用流API:
list.stream()
.filter(m -> m.getLevel() >= 0)
.min(Comparator.comparingInt(Measurement::getLevel))
getLevel()
更好的回归类型是OptionalInt
。这将迫使每个处理级别的代码考虑测量没有级别的情况,从而避免错误。
另一答案
由于您使用Collections.min找到了最小值,因此将没有值的对象的值设置为某个大数而不是-1表示Integer.MAX_VALUE,这样就不会再造成任何问题。我不确定这个更改是否会对程序的其他模块造成任何问题,但它肯定会解决这个问题的Collections.min。
以上是关于我可以以某种方式从java中的Collections.Min / Collections.Max中排除或过滤掉一个值吗?的主要内容,如果未能解决你的问题,请参考以下文章