有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

要在对象之间比较并返回该对象的Java流?

我有一个类对象的ArrayList,如下所示:

ArrayList<Score> scoreboard = new ArrayList<>();

Score类有一个字段points

class Score {
    private int points; 
    //constructor and methods
}

如何使用Java streams来比较每个Score对象中的points,并返回具有最高/最低值的对象

我尝试过类似的方法,但没有成功:

scoreboard
    .stream()
    .max(Comparator.comparing(Score::getPoints)
    .get()
    .forEach(System::println);

共 (1) 个答案

  1. # 1 楼答案

    仔细看看您尝试过的内容:

    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);