在
Java中查找您编写的序列的最大元素:
GameState bestGs = Collections.max(ns,
Comparator.comparing(e -> minimax(e)));
这里minimax是一个返回数字的函数,ns是一个集合.代码可以工作,但是对于集合的每个元素,将对键函数进行多次评估.我如何制作它,以便每个元素只评估一次?在Python中你只需要写max(seq,key = lambda e:minimax(e))在Java中必须有类似的东西吗?不要告诉我自己写forloop,这是21世纪我不应该的!
显式循环代码如下所示:
GameState best = null;
// Doesn't matter what scalar type is used.
int bestScore = Integer.MIN_VALUE;
for (GameState n : ns) {
int thisScore = minimax(n);
if (thisScore > bestScore) {
bestScore = thisScore;
best = n;
}
}
我想在Java中以“功能”的方式编写上述内容,但也保留了高性能.