我无法继续我的HashMap作业。你能帮助我吗?

我有2个HashMapmtutorsmstudents

mtutors键:他们的名字。
mtutors值:主题。
mstudents键:他们的名字。
mstudents值:主题(ArrayList

我必须找到匹配的导师学生。
例如:
mtutors键之一:Peter Parker。
mtutors值之一:数学。
msstdents密钥之一:Bill Gates。
mstudents值之一:math,IT。
配对:Peter Parker和Bill Gates-数学。

HashMap<String,String> mtutors = new HashMap<>();
HashMap<String,ArrayList> mstudents = new HashMap<>();
for(int i=0;i<tutors.size();i++)
    mtutors.put(tutors.get(i).firstName + " "
          + tutors.get(i).lastName, tutors.get(i).subject);
for(int i=0;i<students.size();i++)
    mstudents.put(students.get(i).firstName + " "
          + students.get(i).lastName, students.get(i).students);

最佳答案

如果您使用的是Java8或更高版本,请尝试以下操作:

mtutors.forEach((tutorName, subject) -> {
        mstudents.forEach((studentName, subjects) -> {
            if (subjects.contains(subject)) {
                System.out.println(tutorName + ":" + studentName + ":" + subject);
            }
        });
    });


我假设您正在将科目(而非学生)放置到学生地图上。

数据流仅用于首次拟合的示例。

mtutors.forEach((tutorName, subject) -> {
        mstudents.entrySet().stream()
                .filter(entry -> entry.getValue().contains(subject))
                .findFirst()
                .ifPresent(entry -> System.out.println(tutorName + ":" + entry.getKey() + ":" + subject));
    });

08-26 22:48