当前位置: 首页 > 知识库问答 >
问题:

关联两个数组列表并打印结果

程磊
2023-03-14

我在这里拥有的是一组三个数组列表。一个包含姓名、姓氏、uid和学位方案的学生数组列表。然后,我还有一个模块列表,每个模块还包含一个学生ID数组列表,用于在该特定模块上注册的学生。

我要做的是将学生的数组列表与用户ID的数组列表链接起来,这样程序就会查看ID,并将它们与包含所有学生详细信息的列表进行比较,然后编写一份包含完整学生详细信息和他们注册的模块的合并报告。

我的数组列表设置得很好,但是我很难使用ID访问内部数组列表。解释起来很棘手,但这是我的应用程序类的代码,它将所有内容保存在一起,您可以看到 ArrayLists 的布局。

import java.util.*;
import java.io.*;


public class Model {
    private ArrayList<Student> students;
    private ArrayList<Module> modules;
    private Module moduleLink;

    public Model(){
        students = new ArrayList<Student>();
        modules = new ArrayList<Module>();





    }
    public void runTests() throws FileNotFoundException{
        System.out.println("Beginning program, the ArrayList of students will now be loaded");
        loadStudents("studentlist.txt");
        System.out.println("Load attempted, will now print off the list");
        printStudents();
        System.out.println("The module list will now be loaded and printed");
        loadModules("moduleslist.txt");
        printModules();
        System.out.println("Modules printed, ArrayList assosciation will commence");






    }
    public void printStudents(){
       for(Student s: students){
           System.out.println(s.toString());
       }
    }

    public void printModules(){
        for(Module m: modules){
            System.out.println(m.toString());

        }

    }

    public void loadStudents(String fileName) throws FileNotFoundException{
        Scanner infile =new Scanner(new InputStreamReader 
                (new FileInputStream(fileName)));
        int num=infile.nextInt();infile.nextLine();
        for (int i=0;i<num;i++) {
            String u=infile.nextLine();
            String s=infile.nextLine();
            String n=infile.nextLine();
            String c=infile.nextLine();

            Student st = new Student(u,s,n,c);
            students.add(st);

        }
        infile.close();

    }   


    public void loadModules(String fileName) throws FileNotFoundException{
        Scanner infile =new Scanner(new InputStreamReader 
                (new FileInputStream(fileName)));
        int numModules = infile.nextInt();
        infile.nextLine();
        for (int i=0;i<numModules;i++){     

            String code = infile.nextLine();
            int numStudents = infile.nextInt();
            infile.nextLine();
            ArrayList<Student> enrolledStudents = new ArrayList<Student>(numStudents);


            for (int a=0;a<numStudents;a++){

                String uid = infile.nextLine();

                Student st = new Student(uid);
                enrolledStudents.add(st);

            }

            Module m = new Module(code,enrolledStudents );
            modules.add(m);

        }
        infile.close();
    }












}

非常感谢任何帮助。

共有1个答案

田嘉慕
2023-03-14

如果您正在寻找学生详细信息,也许您应该重新设计您的课程。学生应注册一个模块。因此,学生应该有模块。并使用地图根据 ID 检索学生。

class Student {
    String id;
    List<Module> modules = new ArrayList<Module>();
}

loadStudents()将保持不变,只是您必须将学生id映射到您在循环中创建的学生对象。loadModules()将根据学生id从地图中挑选学生,并更新模块。

在这种情况下,您需要基于学生的数据。

 类似资料:
  • 问题内容: 我需要一个将所有元​​素组合在一起的新数组,即 做这个的最好方式是什么? 对不起,我忘了,这些ID永远不会匹配,但是从技术上讲,这些名称可能会出现,但不可能出现,它们都必须列在一个数组中。我查看了array_merge,但不确定这是否是最佳方法。另外,您将如何对此进行单元测试? 问题答案: 效率更高,但有两种选择:

  • 我现在的代码: 我希望它打印两个数组的交集,而不需要再次打印相同的数字。 E、 g:code>[1,2,2,1]和的交点应该只打印一次,而不是像我现在的代码那样。

  • 想改进这个问题吗 通过编辑此帖子,更新问题,使其只关注一个问题。 我需要编写一个接受ArrayList的一个参数并将每个字符串打印为数组1中索引的数字泰晤士报(以便我们也打印第一个值)的函数。例如:对于以下ArrayList:{"ABC","XX","YY"}print printStrings(arrList) ABC XX XX YY YY YY 到目前为止,我写了这个,我不知道如何继续:

  • 我非常困惑,因为如何才能从另一个方法获取ArrayList,并将其打印到另一方法?所以我这里的问题是,我的代码是关于学生注册系统的,它有两个方法,即admin和student,所以从admin方法,我们可以添加我们想要的数组,当我们在admin方法中打印出来时,它可以正常工作。但当我试图用学生法打印出来时,似乎没有用。代码如下: 我真的希望有人能理解我的问题,并努力解决它..请:(也谢谢你 以下是

  • 问题内容: 我有两个SQLite数据库,两个数据库都有连接表来描述 一对多 关系。现在,需要使用某种导入/导出机制将这两个数据库合并到一个数据库中,并且仍然保持关系。 我尝试使用来转储 DB2 ,然后使用来将其重新加载到 DB1 中,但始终收到警告。 是否有最佳实践来处理这种情况? 最好不要使用以避免额外的复杂性。 DB1 Fruit 果汁 配方(连接表) DB2 Fruit Juice 配方(连

  • 问题内容: 我正在尝试创建一个包含2个列表并返回仅具有两个列表差异的列表的函数。 例: 结果应打印 到目前为止的功能: 第一个for循环将其排序,第二个将重复项删除。问题是结果 不是,所以不能完全删除重复项吗?我可以添加些什么来做到这一点。我不能使用任何特殊模块,.sort,set或其他任何东西,而只是基本地循环。 问题答案: 基本上,您希望将一个元素添加到新列表中(如果一个元素存在而另一个元素中