Java 如何返回新的ArrayList?

Java 如何返回新的ArrayList?,java,arraylist,Java,Arraylist,我有一个ArrayList: ArrayList<Student> studentList = new ArrayList<Student>(); 我想要输出的内容: Johnny Johns Computer Science Junior 21 In-State Morgan Freeman Theater Junior 21 In-State 目前的产出: [Johnny Johns Computer Science Junior 21 In-State] 当你

我有一个ArrayList:

ArrayList<Student> studentList = new ArrayList<Student>();
我想要输出的内容:

Johnny Johns
Computer Science
Junior
21
In-State
Morgan Freeman
Theater
Junior
21
In-State
目前的产出:

[Johnny Johns
Computer Science
Junior
21
In-State]

当你回来时,这就打破了你的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;
}
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;
public ArrayList studentgrade(字符串类别){
ArrayList gradeCategory=新建ArrayList();
适用于(DVD学生:学生名单){
if(stu.GetCategory().toUpperCase().contains(category.toUpperCase())){
System.out.println(“找到”);
等级分类。添加(DVD条目);
}
}
退货类别;
}

您似乎遗漏了许多相关代码。然而,潜在的问题似乎是,一旦找到一个匹配项,您就会返回,而不是收集所有匹配项。只需将您的回报移出循环:

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;
}
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;
ArrayList gradeCategory=new ArrayList();
适用于(DVD学生:学生名单){
if(stu.GetCategory().toUpperCase().contains(category.toUpperCase())){
System.out.println(“找到”);
等级分类。添加(DVD条目);
}
}
返回catDVD;

循环中的
返回
结束方法,在循环中使用
中断
,或
继续

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;
  }
}
public ArrayList studentgrade(字符串类别){
ArrayList gradeCategory=新建ArrayList();
学生名单(学生stu:studentList){
if(stu.GetCategory().toUpperCase().contains(category.toUpperCase())){
System.out.println(“找到”);
等级分类。添加(stu);
}
}
如果(gradeCategory.size()>0)
退货类别;
否则{
System.out.println(“未找到类别”);
返回null;
}
}


变量
dvdtentry
catDVD
来自哪里?我还认为你的问题是你在循环中返回一个列表,把return语句放在循环外。哎呀,我稍微修改了我的代码,这样我的实际代码就不会在互联网上到处都是了……也许
return
在循环外?请不要在不理解代码的情况下复制代码。您复制了一个处理租用DVD的示例,并使用它,但没有更改示例以适应此问题。你的代码根本不应该编译。现在您编辑了它,它可能会编译,但您仍然在使用基于答案的概念。@EricJablow,我正在编写的是我的原始代码。我更改了一些内容,因为我认为这也更容易解释。我可能遗漏了一些内容,但最好返回
gradeCategory
而不是
catDVD
?是的,对不起,我没有看就复制了特拉玛的代码。修好了now@dspyz,这肯定有效,而且更接近,但它仍然在返回列表的开头和结尾返回“[]”。现在每个物体之间都有“,”。我在另一个类中检查了我的toString方法,但没有输入“,”。这就是
ArrayList.toString()
的工作原理。你必须自己定制它。返回是方法做的最后一件事。当一个方法返回时,它不再运行,只返回一次。我不知道您所说的“它仍然在返回列表的开头和结尾返回“[]”是什么意思,但我可以向您保证,此方法返回一个ArrayList,其中只包含GetCategory()方法包含字符串类别的内容。如果没有这样的学生存在,那将是一个空列表。我认为你应该只在代码被编辑之后才返回
gradeCategory
而不是
catDVD
@MadProgrammer。在代码返回之前,未包含其定义的catDVD。声称该代码正在打印一条记录意味着该代码确实与该返回一起运行,就好像
catDVD
在某种程度上包括
gradeCategory
。我提到的“您似乎遗漏了很多相关的代码”就是指这个。我之前有点质疑它,但这只是我:P+1很有趣看到您尝试维护原始返回结果
null
,以获得一个空结果。(虽然,就我个人而言,我更喜欢空列表,但这就是我;)我尝试了“.length”,但它没有编译。size()似乎工作得更好。我的缺点是,我现在正在使用Python、JavaScript和ActionScript<编码>长度,
长度
长度()
大小()
,。。。他们都一样,对吧?@polywhill先生哈哈,基本上是的。但我明白你说的话。我很感激。