如何比较固定的java数组和动态数组?

时间:2015-12-26 14:04:56

标签: java arrays

我正在开发一个专注于为学费添加科目的学费管理系统。它更专注于学费人员。我已经设置了一个固定的学生数组,大约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");
            }
        }


    }
  • 数据是学生的固定列表。每个学生都有自己的收藏 因此,我得到一个特定学生的索引,然后得到一个 在他/她的收藏下的特定主题然后得到教师的名字 所以我可以将它与动态分配的主题arrray相匹配 老师。然后我将更新noofteachers数组,以便我可以得到 特定教师的学生人数。

这是一个包含大量代码的大项目,所以我认为不适合在这里分享它。这是我整个项目的github链接。 https://github.com/ariff20/UPSR

2 个答案:

答案 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)

使您的比较代码与数组大小无关。

换句话说,将较小数组中 元素 的出现映射到较大数组中的出现,完全相互独立地遍历它们。

当你有了地图时,你可以知道较小数组的所有元素是否都在较大的数组中找到,反过来,即使是较大数组中的哪些元素,较小的数组也不存在。