Java中的最小/最大lambda表达式

4

有没有一种(优雅的)方法定义一个最小/最大 lambda 表达式?

public class MathFunction{
  private java.util.function.Function <double[], Double> function = null; 
  public MathFunction ( Function <double[], Double> pFunction ){    
     this.function = pFunction;   
  }
}
// now defining a min-function...
MathFunction func = new MathFunction((x) -> min(x));

当然,min(x)不起作用。我需要一种即时排序数组的方法。

可能是重复问题:相关问题 - Kenney
1个回答

4
您可以流式传输数组并从中提取min:
MathFunction func = 
    new MathFunction((x) -> Arrays.stream(x).min().getAsDouble());

太棒了!我已经尝试过 Arrays.stream 但不知道 .getAsDouble()。非常感谢你。 - user1511417
@user1511417 - иҝҳжңүArrays.stream(x).summaryStatistics()пјҢдҪ еҸҜд»Ҙд»ҺдёӯиҺ·еҸ–getMin()е’ҢgetMax()пјҢеӣ жӯӨеҸӘйңҖйҒҚеҺҶдёҖж¬Ўж•°з»„гҖӮ - OldCurmudgeon
@OldCurmudgeon 酷,我不知道这个。请注意,你将为数组中的每个项执行五次计算,而不仅仅是min函数执行一次。对于大型数组来说,这可能会有明显的差异。 - Mureinik
@Mureinik - min仍然需要对数组进行完整的遍历。如果您需要同时获取minmax(正如OP所需),则此技巧将确保一次遍历并同时提供两者。 - OldCurmudgeon
@OldCurmudgeon同意-如果你需要多个答案,最好只遍历一次列表。但是,如果你只需要min,那么要计算其他很多东西就有点可惜了。 - Mureinik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接