尝试将数组拆分为arrayList

时间:2018-08-11 08:27:53

标签: java arrays arraylist

我正在尝试将已读取的文件拆分为数组。我正在读取的文件是这样排序的。

  • Lauri Maranto;经理
  • Everett Flanders;经理
  • Rachel Cornforth;设计师
  • Rocco Burks;设计师
  • Larue Maddox;设计师
  • Carmelo Grunden;测试人员

所以在这里,我将每一行放入数组中,现在我试图将它们放入arrayList中,必须将它们拆分。

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);

Someane知道我能做什么?谢谢。

现在的问题是itemList中只有最新数据。 这是打印输出。

[Carmelo Grunden, tester]

1 个答案:

答案 0 :(得分:3)

在您的k=循环中,每次迭代都创建一个 new for数组(String)。但是,您只能在items循环之后创建List 之后,这意味着仅考虑最后一次迭代。尝试将代码更改为以下内容:

for

基于评论的扩展答案。

如果您的目标更像注释中提到的@Maurice,那么您可以将代码更改为:

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[]> itemList = new ArrayList<>();
for (String line : lines) {
    itemList.add(line.split(";"));
}

由于每个名称都对应一个工作,因此最好使用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

这仅将名称连接到作业(而不是相反),并且还将使用限制为唯一名称(因为Map<String, String> map = new HashMap<>(); for (String line : lines) { String[] tokens = line.split(";"); map.put(tokens[0], tokens[1]); } 不能具有两个相同的键)。 / p>

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

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...
}