要在对象之间比较并返回该对象的Java流?
我有一个类对象的要在对象之间比较并返回该对象的Java流?,java,java-8,java-stream,comparator,Java,Java 8,Java Stream,Comparator,我有一个类对象的ArrayList,如下所示: ArrayList<Score> scoreboard = new ArrayList<>(); 如何使用Java streams来比较该评分对象中的点,并返回具有最高/最低值的对象 我尝试过类似的方法,但没有成功: scoreboard .stream() .max(Comparator.comparing(Score::getPoints) .get() .forEach(System:
ArrayList
,如下所示:
ArrayList<Score> scoreboard = new ArrayList<>();
如何使用Java streams来比较该评分对象中的点
,并返回具有最高/最低值的对象
我尝试过类似的方法,但没有成功:
scoreboard
.stream()
.max(Comparator.comparing(Score::getPoints)
.get()
.forEach(System::println);
仔细看看您尝试过的内容:
scoreboard.stream().max(Comparator.comparing(Score::getPoints).get().forEach(System::println);
在这里,您试图创建一个比较器:
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);
Optional=scoreboard.stream().max(…);
opt.ifPresent(System.out::println);
定义不工作。
Optional<Score> opt = scoreboard.stream().max(...);
opt.ifPresent(System.out::println);