Java 尝试将数组拆分为arrayList

Java 尝试将数组拆分为arrayList,java,arrays,arraylist,Java,Arrays,Arraylist,我正在尝试将已读取的文件拆分为数组。我从中读取的文件的顺序如下 劳里·马兰托;经理 埃弗里特·弗兰德斯;经理 雷切尔·康福斯;设计师 罗科伯克斯;设计师 拉鲁·马多克斯;设计师 卡梅洛·格伦登;测试员 所以这里我把每一行放在一个数组中,现在我试图把它们放在一个数组列表中,它们必须被拆分 try { String bestand = "C:\\Users\\admin\\D

我正在尝试将已读取的文件拆分为数组。我从中读取的文件的顺序如下

  • 劳里·马兰托;经理
  • 埃弗里特·弗兰德斯;经理
  • 雷切尔·康福斯;设计师
  • 罗科伯克斯;设计师
  • 拉鲁·马多克斯;设计师
  • 卡梅洛·格伦登;测试员
所以这里我把每一行放在一个数组中,现在我试图把它们放在一个数组列表中,它们必须被拆分

try {                                                          
   String bestand = "C:\\Users\\admin\\Documents\\java oo labo's\\ProjectBeheer\\data\\personeel.csv";                             
   String[] lijnen = TextFile.readLines(bestand);
} catch (IOException io) {
    System.out.println("error" + io.getMessage());
}
这是我得到的,但它只显示最新的值,然后我得到一个错误

String[] items = null; 
for (int i = 0; i < lines.length; i++) {
    items = lines[i].split(";");
}
List<String> itemList = Arrays.asList(items);
System.out.println(itemList);

for
循环中,每次迭代都要创建一个新的
字符串
数组(
)。但是,您只能在
for
循环之后创建
列表,这意味着只考虑最后一次迭代。尝试将代码更改为以下内容:

List<String> itemList = new ArrayList<>();
for (int i = 0; i < lines.length; i++) {
    for (String token : lines[i].split(";")) {
        itemList.add(token);
    }
}
System.out.println(itemList);
List<String> nameList = new ArrayList<>();
List<String> jobList = new ArrayList<>();
for (String line : lines) {
    String[] tokens = line.split(";");
    nameList.add(tokens[0]);
    jobList.add(tokens[1]);
}
这只会将名称连接到作业(而不是相反),而且还限制了对唯一名称的使用(因为
Map
不能有两个相同的键)

最好的选择可能是创建一个类来保存这些信息

public class Employee {
    private String name;
    private String job;

    public Employee(String name, String job) {
        this.name = name;
        this.job = job;
    }

    // Getters and setters omitted for brevity...
}
然后创建如下列表:

List<Employee> list = new ArrayList<>();
for (String line : lines) {
    String[] tokens = line.split(";");
    list.add(new Employee(tokens[0], tokens[1]));
}
List List=new ArrayList();
用于(字符串行:行){
String[]tokens=line.split(“;”);
列表.添加(新员工(令牌[0],令牌[1]);
}

请发布您提到的错误。我的错,我添加了它。抱歉,我修复了错误,但我的arraylist只保存最后一个值,而不保存其他值。这是在arraylist的单独元素中添加每个单词。难道他不想将每个拆分的数组存储在一个arraylist中吗?@Maurice不是根据他或她的代码编写方式。行
数组。asList(items)
表示目标是拆分每行并将所有标记作为单独的元素添加到
列表中。@Slaw这也可以,谢谢。但如果我也能将他们按姓名和职务分开放在一个单独的列表中,那可能会更好。@floriandewulf在我的列表中添加了更多内容answer@Slaw太棒了,谢谢。但我如何从第二个令牌中提取日期?列表.添加(新员工(令牌[0],令牌[1]);如果我使用list.get(1)或更高,它只返回令牌[0]。
Map<String, String> map = new HashMap<>();
for (String line : lines) {
    String[] tokens = line.split(";");
    map.put(tokens[0], tokens[1]);
}
public class Employee {
    private String name;
    private String job;

    public Employee(String name, String job) {
        this.name = name;
        this.job = job;
    }

    // Getters and setters omitted for brevity...
}
List<Employee> list = new ArrayList<>();
for (String line : lines) {
    String[] tokens = line.split(";");
    list.add(new Employee(tokens[0], tokens[1]));
}