java - 过滤映射并返回键列表

标签 java list dictionary java-8 java-stream

我们有一个Map<String, Student> studentMap ,其中Student是一个类,如下所示:

class Student{
    String name;
    int age;
}

我们需要返回所有 Id 的列表 eligibleStudents ,其中年龄 > 20。
为什么下面会在 Collectors.toList 处给出编译错误:

HashMap<String, Student> studentMap = getStudentMap();
eligibleStudents = studentMap .entrySet().stream()
        .filter(a -> a.getValue().getAge() > 20)
        .collect(Collectors.toList(Entry::getKey));

最佳答案

Collectors.toList() 不接受任何参数,您需要先映射它:

eligibleStudents = studentMap.entrySet().stream()
    .filter(a -> a.getValue().getAge() > 20)
    .map(Map.Entry::getKey)
    .collect(Collectors.toList());

关于java - 过滤映射并返回键列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59298247/

相关文章:

java - 如何将这个列表翻译成Java?

Java Swing,所有图像均出现像素化

java - 从 servlet 内部调用 java 方法

java - 如何验证 log4j2 是否通过 LMAX disruptor 异步记录?

java - 在 Java 中转换内部条件运算符

python - 为什么我不能使用 inspect.getsource() 查看列表的来源?

java - spring-boot 无法在 docker 中启动

python - 按字母顺序排列的字典键

c++ - std::map::iterators post increment 的奇怪行为

Python 检查字典中是否定义了键