【问题标题】:min/max lambda expression in javajava中的最小/最大lambda表达式
【发布时间】:2016-02-15 06:25:17
【问题描述】:

是否有(优雅的)方法来定义最小/最大 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) 确实工作。我需要一种“动态”对数组进行排序的方法。

【问题讨论】:

标签: java arrays sorting lambda min


【解决方案1】:

您可以流式传输数组并从中提取min

MathFunction func = 
    new MathFunction((x) -> Arrays.stream(x).min().getAsDouble());

【讨论】:

  • 完美!!我已经尝试过Arrays.stream,但不知道.getAsDouble()。非常感谢。
  • @user1511417 - 还有Arrays.stream(x).summaryStatistics(),您可以从中拉出getMin()getMax(),因此只遍历数组一次。
  • @OldCurmudgeon 很酷,不知道这一点。请注意,您将为数组中的每个项目执行五次计算,而不是 min 执行的一次计算。对于大型阵列,这可能是一个明显的差异。
  • @Mureinik - min 仍然需要执行完整的数组传递。如果您同时需要 minmax(就像 OP 似乎那样),这个技巧将确保一次通过并同时交付。
  • @OldCurmudgeon 同意 - 如果您需要多个答案,最好只遍历列表一次。但是,如果您只需要min,那么必须计算一堆其他的东西是很可惜的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
相关资源
最近更新 更多