微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带if条件的双for循环

如何解决带if条件的双for循环

我在java中使用double for循环遇到麻烦,特别是内部if条件

这是我的代码

 public Set<Term> getAllTermsForStudent(Long id) {

        List<Term> terms = termRepository.findAll();
        Set<Term> set_terms = new HashSet<Term>(terms); //there are 3 terms
        Set<Exam> exams = studentService.getStudentExams(id); //in this student's case,there are 9 exams,3 in each term
        Set<Exam> new_exams = new HashSet<>();

        for(Term t: set_terms) { 
            for(Exam e: exams) {
                if(t.getId() == e.getTerm().getId()) { //exam has term id,which indicates to which
                                                         term it belongs,so I'm comparing it,and I 
                                                         want to add it to new exam set
                    new_exams.add(e);
                }
            }
           t.setExams(new_exams);

        }

        return set_terms;
    }

功能输出每学期给我9次考试,就像忽略条件一样

解决方法

此功能的输出每学期给我9次考试,就像忽略条件一样

那是因为您要重复使用相同的Set来添加考试。

在循环内声明变量。

for(Term t: set_terms) { 
  Set<Exam> new_exams = new HashSet<>();

  for(Exam e: exams) {
    // ...
  }

  t.setExams(new_exams);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。