获取列表<;字符串>;和HashMap<;字符串,对象>;使用Java8流

获取列表<;字符串>;和HashMap<;字符串,对象>;使用Java8流,java,lambda,java-8,java-stream,Java,Lambda,Java 8,Java Stream,这里有一些类似的东西,我正在我的项目中工作。班级不同有一个明显的原因。就说我有课 public class Division { String className; Map<String, Student> studentMap; // getters and setters } 我有以下这些类的实例: Student s1= new Student("Lisa", "xyz", "12"); Student s2= new Student("J

这里有一些类似的东西,我正在我的项目中工作。班级不同有一个明显的原因。就说我有课

public class Division {
    String className;
    Map<String, Student> studentMap;
    // 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);
List<String> filterList= new ArrayList<>();
Student s;
for(String key:allstudentsMap.keySet()) {

    s= allstudentsMap.get(key);
    if(s.getfName().equalsIgnoreCase("Lisa")) {
        filterList.add(key);
    }

}
Student s1=新学生(“Lisa”、“xyz”、“12”);
学生s2=新生(“约翰”、“荷航”、“13”);
学生s3=新学生(“丽莎”、“xyz”、“14”);
第d1部分=新的第()部分;
第d2分部=新分部();
Map studentMap1=新的HashMap();
学生地图1.put(“键1”,s1);
学生地图1.put(“键2”,s2);
Map studentMap2=新HashMap();
学生地图2.put(“键3”,s3);
d1.设置学生地图(学生地图1);
d2.设置学生地图(学生地图2);
List-dList=Arrays.asList(d1,d2);
这里,请注意,我们在HashMap中使用的键在整个数据库中是唯一的。 所以我可以在Java7中编写类似的东西来获取所有的studentMap

  • 获取所有学生的地图

    Map<String, Student> allstudentsMap= new HashMap<>();
    
    for(Division d: dList) {
    
        for(String key:d.getStudentMap().keySet()) {
            allstudentsMap.put(key, d.getStudentMap().get(key));
    
        }
    }
    
    Map allstudentsMap=newhashmap();
    (d组:数据列表){
    对于(字符串键:d.getStudentMap().keySet()){
    allstudentsMap.put(key,d.getStudentMap().get(key));
    }
    }
    
  • 我还需要得到一些过滤条件的密钥列表。例如,为名为Lisa的学生获取密钥列表。我可以使用上面的HashMap获得如下列表:

    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);
    
    List<String> filterList= new ArrayList<>();
    Student s;
    for(String key:allstudentsMap.keySet()) {
    
        s= allstudentsMap.get(key);
        if(s.getfName().equalsIgnoreCase("Lisa")) {
            filterList.add(key);
        }
    
    }
    
    List filterList=new ArrayList();
    学生证;
    for(字符串键:allstudentsMap.keySet()){
    s=所有学生映射获取(键);
    if(s.getfName().equalsIgnoreCase(“Lisa”)){
    filterList.add(键);
    }
    }
    
  • 我需要一个帮助来使用Java8流做同样的事情。 1.获取所有学生的地图 2.获取某些筛选条件的所有关键点列表。

    考虑到所有关键点都是唯一的,您只需将多个地图中的每个条目放入最终地图,如下所示:

    Map<String, Student> allStudentsMap = new HashMap<>();
    dList.forEach(d -> d.getStudentMap().forEach(allStudentsMap::put));