我有一个具有以下结构的对象列表:
public class ExampleObject {
private boolean someBoolean;
private int someInteger;
// getters, setters, constructor...
}
我需要一个方法,如果任何对象的 someBoolean 字段设置为 true,它将返回整数 -1,否则返回 someInteger 的最小值。
我可以用简单的 for 循环来完成,有没有一种方法可以用一个流来完成?我的问题是 anyMatch 和 min() 都在终止流。
最佳答案
如果 someInteger
是非负数,您可以根据 boolean
属性的值将每个实例映射到 -1 或 someInteger
, 并找到最小值:
OptionalInt min = list.mapToInt (o -> o.getSomeBoolean () ? -1 : o.getSomeInteger())
.min();
如果 someInteger
可以为负数,您可以将 boolean
属性为 true
的实例映射到 Integer.MIN_VALUE
,如果它等于 Integer.MIN_VALUE
,则将输出更改为 -1
。
关于一行中的 Java 8 流 min() 和 anyMatch() (或类似的东西),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57141069/