下面是一些类似的东西,我正在做我的项目。类是不同的,原因很明显。我得说我还有课
public class Division {
String className;
Map<String, Student> studentMap;
// getters and setters
}
和
public class Student {
String fName;
String lName;
String id;
// getters and setters
}
下面是这些类的实例:
Student s1= new Student("Lisa", "xyz", "12");
Student s2= new Student("John", "klm", "13");
Student s3= new Student("Lisa", "xyz", "14");
Division d1= new Division();
Division d2= new Division();
Map<String, Student> studentMap1= new HashMap<>();
studentMap1.put("key1", s1);
studentMap1.put("key2", s2);
Map<String, Student> studentMap2= new HashMap<>();
studentMap2.put("key3", s3);
d1.setStudentMap(studentMap1);
d2.setStudentMap(studentMap2);
List<Division> dList= Arrays.asList(d1, d2);
这里,请注意,我们在HashMap中使用的密钥在db中是唯一的。所以我可以用Java 7编写这样的东西来获得所有的studentMap
我需要帮助使用Java 8流来做同样的事情。1.获取所有学生的地图2。获取某些筛选条件下的所有键的列表。
发布于 2019-02-25 18:17:24
考虑到所有键都是唯一的,您可以简单地将几个映射中的每个条目放入最终的地图中,如下所示:
Map<String, Student> allStudentsMap = new HashMap<>();
dList.forEach(d -> d.getStudentMap().forEach(allStudentsMap::put));
此外,在filter
上应用entrySet
并收集相应的键:
List<String> filterList = allStudentsMap.entrySet().stream()
.filter(e -> e.getValue().getfName().equalsIgnoreCase("Lisa"))
.map(Map.Entry::getKey)
.collect(Collectors.toList());
https://stackoverflow.com/questions/54877435
复制