我正在开发一个专注于为学费添加科目的学费管理系统。它更专注于学费人员。我已经设置了一个固定的学生数组,大约20个,我想将该数组与动态主题列表数组进行比较,以获得特定教师的学生数量。 不幸的是,两个阵列显然有不同的大小,所以我如何循环它?
public void checknumberofstudents()
{
for (int i = 0; i < ChooseStudent.suboptions.size(); i++)
{
System.out.println(data.get(i).collectionz.size());
if (data.get(i).collectionz.get(i).getTeacher() == ChooseStudent.suboptions.get(i).getTeacher())
noofteachers[i]++;
else
{
System.out.println("Error with the teacher array");
}
}
}
这是一个包含大量代码的大项目,所以我认为不适合在这里分享它。这是我整个项目的github链接。 https://github.com/ariff20/UPSR
答案 0 :(得分:1)
根据您的代码,以下代码应该可以使用
public Map<String, Integer> studentsByTeacherCount(ObservableList<Student> data) {
Map<String, Integer> teacherMap = new HashMap<String, Integer>();
for (int i = 0; i < data.size(); i++) {
Student student = data.get(i);
List<Subject> subjectList = student.getCollectionz();
for(Subject subject: subjectList) {
Integer entry = teacherMap.get(subject.getTeacher());
if(entry == null) {
teacherMap.put(subject.getTeacher(), Integer.valueOf(1));
} else {
teacherMap.put(subject.getTeacher(), entry + 1);
}
}
}
return teacherMap;
}
答案 1 :(得分:0)
使您的比较代码与数组大小无关。
换句话说,将较小数组中 元素 的出现映射到较大数组中的出现,完全相互独立地遍历它们。
当你有了地图时,你可以知道较小数组的所有元素是否都在较大的数组中找到,反过来,即使是较大数组中的哪些元素,较小的数组也不存在。