【发布时间】:2019-02-26 02:06:41
【问题描述】:
这是我正在处理我的项目的类似内容。类是不同的,原因很明显。假设我有课
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
-
获取所有学生的地图
Map<String, Student> allstudentsMap= new HashMap<>(); for(Division d: dList) { for(String key:d.getStudentMap().keySet()) { allstudentsMap.put(key, d.getStudentMap().get(key)); } } -
我还需要获取某些过滤条件的键列表。例如,获取姓名为 Lisa 的学生的密钥列表。我可以使用上面的 HashMap 得到一个列表,如下所示:
List<String> filterList= new ArrayList<>(); Student s; for(String key:allstudentsMap.keySet()) { s= allstudentsMap.get(key); if(s.getfName().equalsIgnoreCase("Lisa")) { filterList.add(key); } }
我需要帮助才能使用 Java 8 流来做同样的事情。 1. 获取所有学生地图 2. 获取某个过滤条件的所有键的列表。
【问题讨论】:
标签: java lambda java-8 java-stream