Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否在另一个arraylist中列出arraylist项?_Java_Arraylist - Fatal编程技术网

Java 是否在另一个arraylist中列出arraylist项?

Java 是否在另一个arraylist中列出arraylist项?,java,arraylist,Java,Arraylist,我只是用了这个 ArrayList list=new ArrayList() 方法,而输出并不是我想要的方式 我试着列出不同学生的名单,并按他们在哪个年级进行分类。但是,我也在尝试创建一个列表,显示所有学生,无论他们的年级如何。这就是我使用的代码: ArrayList <ArrayList<String>> allStudents = new ArrayList<ArrayList<String>>(); ArrayList <String&

我只是用了这个
ArrayList list=new ArrayList()
方法,而输出并不是我想要的方式

我试着列出不同学生的名单,并按他们在哪个年级进行分类。但是,我也在尝试创建一个列表,显示所有学生,无论他们的年级如何。这就是我使用的代码:

ArrayList <ArrayList<String>> allStudents = new ArrayList<ArrayList<String>>();
ArrayList <String> gradeNines = new ArrayList();
ArrayList <String> gradeTens = new ArrayList();
ArrayList <String> gradeElevens = new ArrayList();
ArrayList <String> gradeTwelves = new ArrayList();

boolean firstSelection = true;

public void grade(String a, String b, ArrayList c)
{

    a = jComboBox1.getSelectedItem() + "";

    if (a.equals(b))
    {
        studentOutput.setText("");
        int x = 0; 
        for (int indexNum = 0; indexNum < c.size(); indexNum++) 
        { 
             x = indexNum + 1; 
             studentOutput.append(num + ". " + c.get(indexNum) + "\n"); 
        }
    }
}   

 private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           

    String studentGrade = jComboBox1.getSelectedItem() + "";

    String all = "All Grades";
    String nine = "Grade Nine";
    String ten = "Grade Ten";
    String eleven = "Grade Eleven";
    String twelve = "Grade Twelve";

    if (firstSelection)
    {
         Collections.addAll(allStudents, gradeNines, gradeTens, gradeElevens, gradeTwelves);
         Collections.addAll(gradeNines, "Oscar", "Justin",....);
         Collections.addAll(gradeTens, "Austin", "Jacob", "Evie"....);
         Collections.addAll(gradeElevens, "Olivia", "Elizabeth"...);
         Collections.addAll(gradeTwelves, "Ryan", "Jade"...);
         firstSelection = false;
    }

    grade(studentGrade, all, allStudents);
    grade(studentGrade, nine, gradeNines);
    grade(studentGrade, ten, gradeTens);
    grade(studentGrade, eleven, gradeElevens);
    grade(studentGrade, twelve, gradeTwelves);
ArrayList allStudents=new ArrayList();
ArrayList gradeNines=新的ArrayList();
ArrayList gradeTens=新的ArrayList();
ArrayList gradeElevens=新的ArrayList();
ArrayList GradeTweves=新的ArrayList();
布尔值firstSelection=true;
公共空隙等级(字符串a、字符串b、阵列列表c)
{
a=jcombox1.getSelectedItem()+“”;
如果(a等于(b))
{
studentOutput.setText(“”);
int x=0;
对于(int indexNum=0;indexNum
但从输出的方式来看,它就像:

  • [Oscar,Justin]2[Austin,Jacob,Evie]3[Olivia,Elizabeth]4[Ryan,Jade]
  • 是否有一种方法可以使其输出,从而单独显示每个名称,如:

  • 奥斯卡2.贾斯汀3.奥斯汀4.雅各布
  • 首先,使用
    Map
    (HashMap或有序实现)可以更好地处理这些类型的“分组”问题。 你可以把分数作为键,把学生姓名列表作为值。这比嵌套的数组列表更容易处理集合数据

    关于你的问题,

    是否有一种方法可以使其输出,从而单独显示每个名称

    不可以。这些是单独的ArrayList。您需要显式地将它们添加/显示在一起

    此外,我建议您在Java8中使用
    Streams
    groupingBy
    函数。这将非常适合您的用例

    使用
    ,您可以选择将所有项目显示在一起,或按等级将其分组,并根据所选的类别(等级)进行显示


    看到这个答案:

    您是否将所有的
    ArrayList
    值设置为
    studentOutput
    ?您可以使用嵌套循环获得所需的输出,因为
    allStudents
    ArrayList的