gpt4 book ai didi

java - 如何动态拆分数组列表?

转载 作者:行者123 更新时间:2023-11-30 09:16:40 25 4
gpt4 key购买 nike

*免责声明:我是 Java 的 super 菜鸟,请多多包涵。

我有一个名为 hw_list 的数组列表,其中包含从文件中读取的字符串,如下所示:

    [Doe John 1 10 1 Introduction.java, Doe Jane 1 11 1 Introduction.java, Smith Sam 2 15 2 Introduction.java Test.java]

我能够使数组的每个元素成为自己的子列表,因此它会像这样打印:

    [Doe John 1 10 1 Introduction.java] 
[Doe Jane 1 11 1 Introduction.java]
[Smith Sam 2 15 2 Introduction.java Test.java]

但是要像上面那样将每个元素拆分到它自己的子列表中,我必须像这样手动写出每个子列表:

    List<String> student1 = hw_list.subList(0, 1);
List<String> student2 = hw_list.subList(1, 2);
List<String> student3 = hw_list.subList(2, 3);

我的问题是读入的字符串数量可能会改变,所以我不知道要提前制作多少个子列表。

有没有一种方法可以使用循环动态创建新列表,然后根据 hw_list.size() 拆分每个元素?

有没有可能是这样的:

    for(int i=0; i<hw_list.size(); i++){
List<String> student(i) = hw_list.sublist(i, i+1)
}

长话短说

我如何获得一个循环来为数组的每个元素创建一个新列表?

最佳答案

您编写的代码运行良好,它在逻辑上没有意义:您拥有的单项子列表不能通过添加更多元素来扩展,并且它们也会随着底层数组列表而改变。

您应该做的是构建一个类来将存储在单个元素中的数据表示为一组相关的、有意义的项目,例如名字、姓氏、部分和提交日期,如下所示:

public class Student {
private String firstName;
private String lastName;
private List<String> fileNames;
private int section;
private int date; // Consider changing this to a different type
public Student(String firstName, String lastName, int section, int date) {
this.firstName = firstName;
this.lastName = lastName;
this.section = section;
this.date = date;
fileNames = new ArrayList<String>();
}
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }
public int getSection() { return section; }
public int getDateSubmitted() { return date; }
public List<String> getFileNames() { return fileNames; }
}

然后您可以创建一个方法,该方法接受一个 String,并生成一个 Student,如下所示:

private static Student studentFromString(String studentRep) {
String[] tokens = studentRep.split(" ");
Student res = new Student(tokens[0], tokens[1], Integer.parseInt(tokens[2]), Integer.parseInt(tokens[3]));
// You can ignore tokens[4] because you know how many files are submitted
// by counting the remaining tokens.
for (int i = 5 ; i != tokens.length ; i++) {
res.getFileNames().add(tokens[i]);
}
return res;
}

关于java - 如何动态拆分数组列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19346717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com