我有一个对象
Class DummyObject() {
double first;
double second;
double third;
double fourth;
}
Class SomeObject() {
List<DummyObject> objectList;
}
Class HighestObject() {
List<SomeObject> objectList;
}
给出了SomeObject类型的变量。我必须找出DummyObject中四个字段的总和是否不等于数量X。
使用for循环,可以很容易地写成:
for(SomeObject someObject : hightestObject.getObjectList()) {
for(DummyObject dummyObject : someObject.getObjectList()){
if((dummyObject.first + dummyObject.second + dummyObject.third + dummyObject.fourth) != X) {
return false;
}
}
}
我们如何使用java流来做到这一点?
最佳答案
您可以组合flatMap
和anyMatch
:
HighestObject h = ...;
boolean foundNotX = h.getObjectList().stream() //Stream<SomeObject>
.flatMap(so -> so.getObjectList().stream()) //Stream<DummyObject>
.mapToDouble(o -> o.first + o.second + o.third + o.fourth) //DoubleStream
.anyMatch(sum -> sum != X);
if (foundNotX) return false;
根据您要执行的操作,使用
.allMatch(sum -> sum == X)
可能更合适。关于java - 使用流的对象字段列表的总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45240631/