我有一个ArrayList
类对象,如下所示:
ArrayList<Score> scoreboard = new ArrayList<>();
Score
类有一个字段points
:
class Score {
private int points;
//constructor and methods
}
我如何使用Java流来比较每个points
对象中的Score
并返回具有最高/最低值的对象?
我尝试了类似的东西,但它不起作用:
scoreboard
.stream()
.max(Comparator.comparing(Score::getPoints)
.get()
.forEach(System::println);
答案 0 :(得分:5)
仔细看看你的尝试:
scoreboard.stream().max(Comparator.comparing(Score::getPoints).get().forEach(System::println);
在这里,您尝试创建Comparator
:
Comparator.comparing(Score::getPoints).get().forEach(System::println)
你并没有平衡括号;并且您正在使用不存在的方法System::println
。
将括号放在正确的位置:
Score maxScore = scoreboard.stream().max(Comparator.comparingInt(Score::getPoints)).get();
// Extra ^
然后打印出来:
System.out.println(maxScore);
或者,如果您不确定该流是非空的:
Optional<Score> opt = scoreboard.stream().max(...);
opt.ifPresent(System.out::println);