java - 与 Map 的键相交的列表

标签 java string list java-8 java-stream

我们有一张Student map 要记录Map<Student, StudentRecord> .
学生类如下:

Student {
    String id;
    String grade;
    Int age; 
}

此外,我们还有一个学生 ID 列表 (List<String>)假如。
使用 Java 流,过滤出 ID 存在于提供的列表中的学生的记录的最有效方法是什么?
预期结果是映射到 Id(String) 的过滤列表 - <Map<Id, StudentRecord>>

最佳答案

您可以流式传输一组条目:

map.entrySet().stream()
    .filter(e -> list.contains(e.getKey()))
    .collect(toMap(Map.Entry::getKey, Map.Entry::getValue));

如果您还想将键映射到 id字段,然后:
map.entrySet().stream()
    .filter(e -> list.contains(e.getKey()))
    .collect(toMap(e -> e.getKey().getId(), Map.Entry::getValue));

关于java - 与 Map 的键相交的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59551041/

相关文章:

java - 检查列表是否包含多个元素的便捷方法

Python - 比较两个存在电子邮件但位于不同行的电子邮件列表

java - 在执行 getKey() 时,将 key 存储在 token USB 上会给出不同的 key (几个不同的字节)

java - 删除开关条件的干净代码(使用多态性)

Java NoClassDefFoundError 错误

java - 如何在 Java 中匹配一串元组?

java - Java 中的快速失败迭代器

java - 方法返回类型 String 不是 String

string - ocaml中反转字符串

java - 如何使用用户输入更改对象的名称?