首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >试图将数组拆分为arrayList

试图将数组拆分为arrayList
EN

Stack Overflow用户
提问于 2018-08-11 08:27:52
回答 1查看 91关注 0票数 1

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

  • 劳里·马拉托,经理
  • 埃弗雷特·弗兰德斯
  • 瑞秋·康福斯:设计师
  • 罗科·伯克斯
  • 设计师Larue Maddox
  • Carmelo Grunden;测试仪

所以在这里,我把每一行放在一个数组中,现在我试图把它们放到一个arrayList中,它们必须分开。

代码语言:javascript
运行
复制
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());
}

这是我得到的,但它只显示了最新的值,然后我得到一个错误。

代码语言:javascript
运行
复制
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);

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

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

代码语言:javascript
运行
复制
[Carmelo Grunden, tester]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-11 08:57:58

for循环中,每次迭代都创建一个新的String数组(items)。但是,您只在List循环之后创建for,这意味着只考虑最后一次迭代。尝试将代码更改为如下所示:

代码语言:javascript
运行
复制
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);

基于评论的扩展回答。

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

代码语言:javascript
运行
复制
List<String[]> itemList = new ArrayList<>();
for (String line : lines) {
    itemList.add(line.split(";"));
}

如果您希望将名称和职务放在单独的列表中,您可以这样做:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
Map<String, String> map = new HashMap<>();
for (String line : lines) {
    String[] tokens = line.split(";");
    map.put(tokens[0], tokens[1]);
}

这只会将名称连接到作业(而不是相反的方式),而且它还限制使用唯一的名称(因为Map不能有两个相同的键)。

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

代码语言:javascript
运行
复制
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...
}

然后创建如下列表:

代码语言:javascript
运行
复制
List<Employee> list = new ArrayList<>();
for (String line : lines) {
    String[] tokens = line.split(";");
    list.add(new Employee(tokens[0], tokens[1]));
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51797913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档