我正在尝试比较两个变量一系列操作的最终结果。由于操作是相同的,我在这两个变量上使用了Java流。但我需要基于对象的子变量返回结果。例如:
class MyClass {
String strVal;
Integer intVal;
}
MyClass myFunction(MyClass myClass1, MyClass myClass2) {
Stream.of(myClass1, myClass2)
.map(function) // get intVal for both objects
.filter(predicate)
...
// return myClass1 if myClass1.intVal > myClass2.intVal, otherwise myClass2
// current implementation
return myClass1.intVal > myClass2.intVal ? myClass1 : myClass2;
}
在流中是否有可以使用的三元运算符? 或许需要创建新的功能接口?
我提出这个问题的原因是,这不是代码中唯一需要基于比较结果获取值的地方。有些地方我需要使用像下面这样的函数:
return myClass1.intVal > myClass2.intVal ? function(myClass1) : function(myClass2);
我理解流的实现方式,就像下面提到的评论部分。但是整个概念是为了让代码更加清晰。因此,如果有一种更干净的方法只使用一个函数返回值,那么比为所有变量重复使用该函数要好。
Stream.of(myClass1, myClass2)
是什么意思?它会遍历myClass1
,然后是myClass2
。你无法同时访问这两个对象。不清楚你的问题是什么。你现有的实现已经很好了。 - Jim Garrisonfunction(...)
,为什么不直接编写return function(... ? myClass1 : myClass2);
?或者您可以将三元运算结果分配给一个变量,然后return function(result);
。 - kaya3