如何返回一个新的ArrayList?

时间:2013-04-07 02:48:41

标签: java arraylist

我有一个ArrayList:

ArrayList<Student> studentList = new ArrayList<Student>();

从文本文件填充,每个对象包含五条信息。

其中一条信息是“等级”。我想打印特定年级的所有学生。我目前的方法只显示该年级的学生的第一个实例。用“[]”围绕那一个。

public ArrayList<Student> studentInGrade(String category) {
    ArrayList<Student> gradeCategory = new ArrayList<Student>();
    for (Student stu : studentList ) {
        if (stu.GetCategory().toUpperCase().contains(category.toUpperCase())) {
            System.out.println("Found");
            gradeCategory .add(stu );
            return gradeCategory ;
        }
    }

    System.out.println("No Category Found");
    return null;
}

示例:

我希望看到所有“初级”的学生。

示例输入:

Johnny Johns
Computer Science
Junior
21
In-State
Asheley Ashers
Nursing
Sophomore
20
In-State
Andrew Anders
Basket Weaving
Graduate Student
18
Out-State
Morgan Freeman
Theater
Junior
21
In-State

我想输出的内容:

Johnny Johns
Computer Science
Junior
21
In-State
Morgan Freeman
Theater
Junior
21
In-State

目前的产出是什么:

[Johnny Johns
Computer Science
Junior
21
In-State]

3 个答案:

答案 0 :(得分:4)

当你返回时,会打破你的for循环。为了吸引所有学生,您必须遍历整个列表并在之后返回结果。

尝试将其放在循环之后:

public ArrayList<Student> studentInGrade(String category) {
    ArrayList<Student> gradeCategory = new ArrayList<Student>();
    for (DVD stu : studentList ) {
        if (stu.GetCategory().toUpperCase().contains(category.toUpperCase())) {
            System.out.println("Found");
            gradeCategory .add(dvdEntry);
        }
    }
    return gradeCategory;
}

答案 1 :(得分:1)

您似乎遗漏了很多相关代码。然而,似乎潜在的问题是你在找到一场比赛后立即返回,而不是收集所有比赛。只需将你的回报移到循环之外:

ArrayList<Student> gradeCategory = new ArrayList<Student>();
for (DVD stu : studentList ) {
    if (stu.GetCategory().toUpperCase().contains(category.toUpperCase())) {
        System.out.println("Found");
        gradeCategory .add(dvdEntry);
    }
}

return catDVD;

答案 2 :(得分:1)

循环中的return结束方法,改为在循环中使用breakcontinue

public ArrayList<Student> studentInGrade(String category) {
  ArrayList<Student> gradeCategory = new ArrayList<Student>();
  for (Student stu : studentList ) {
    if (stu.GetCategory().toUpperCase().contains(category.toUpperCase())) {
      System.out.println("Found");
      gradeCategory .add(stu );
    }
  }
  if (gradeCategory.size() > 0)
    return gradeCategory;
  else {
    System.out.println("No Category Found");
    return null;
  }
}