どのようにすべてのオブジェクトは、Javaストリームと同じ最大値の取得するには?

Yotus:

私はポイントを持っている選手がいます。私は、ストリームとフィルターを使用してポイントの最大量を共有するすべてのプレイヤーを取得したいです。

public class Player {
    private int points; // Getter omitted
}

私が最初にほとんどのポイントを持つプレイヤーを取得し、同じ量を持っているすべてのプレーヤーをフィルタリングすることにより、これを行うことができます。

Player topPlayer = players.stream().max(Comparator.comparing(Player::getPoints)).orElse(null);

players.stream().filter(p -> p.getPoints() == topPlayer.getPoints()).collect(Collectors.toList());

これは、単一の述語/シングルラインで行うことができますか?

ユージン:

あなたはに集めることができTreeMapた最初で唯一の(最大である)最後のエントリを取得します

players.stream()
       .collect(Collectors.groupingBy(
           Player::getPoints,
           TreeMap::new,
           Collectors.toList()
       ))
       .lastEntry()
       .getValue();

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=171819&siteId=1