如何使用Java流获取具有最高值的所有元素?

2 java java-8 java-stream

我有以下 pojo:

class MyPojo {
    String name;
    int priority;
}
Run Code Online (Sandbox Code Playgroud)

我有一个List<MyPojo>. 现在,我想检索所有具有最高优先级的元素。这些元素的顺序无关紧要。

Java流可以做到这一点吗?我认为我应该首先按优先级分组,然后获取属于最高优先级的所有元素,但我不确定如何以有效的方式执行此操作。

IQb*_*rod 5

你应该把它投射到IntStream并摆脱max()它。然后使用此值获取每个 pojo。

import java.util.List;
import java.util.stream.Collectors;

class MyPojo {
    String name;
    int priority;

    public int getPriority() {
        return priority;
    }
}

public class Main {
    public static void main(String[] args) {
        List<MyPojo> list = null;
        int max = list.stream().mapToInt(MyPojo::getPriority).max().orElse(Integer.MIN_VALUE);
        List<MyPojo> maxPojos = list.stream().filter(pojo -> pojo.getPriority() == max).collect(Collectors.toList());
    }
}
Run Code Online (Sandbox Code Playgroud)