如何创建一个循环,从ArrayList的每一行中分割出来?

4
我有一个函数,它访问一个文件并将每一行设置为一个新的字符串行,并存储在一个ArrayList中。如何编写一个循环来遍历每一行,并在出现“,”的位置拆分该行,以创建“列”?
例如: 文件包含以下行:
a, 1, 3, b
3, 2, 5, 6
c, b, d, 4

以下代码将每行保存为字符串并存储在ArrayList中。
ArrayList<String> result = new ArrayList<String>();
while(input_file.hasNextLine())
{
    String line = input_file.nextLine();
    result.add(line);
}

从这里开始我有点儿困惑。我知道下面这段代码将会把文件 "a, 1, 3, b" 的第一行分割成新的字符串并存入新的 ArrayList 中。

String foo = input_file.nextLine();
List<String> myList = new ArrayList<String>(Arrays.asList(foo.split(",")));

有没有一种方法可以将它们结合起来,以便我可以循环遍历每一行并拆分所有内容?从这里开始,我还想知道如何将某列中的数字相加。我知道我可能需要使用for循环调用每个第n个值(即列号),并编写一个if语句来仅获取通过解析语句检查为数字的列中的值,然后将它们相加。

1
你可以创建一个ArrayList<ArrayList<String>> results,而不是添加行,你可以添加包含拆分字符串的ArrayList。 - Jelle van Es
2个回答

3
try (Stream<String> fs = Files.lines(path)) {
  List<List<String>> linesByElements = fs
      .map(s -> Arrays.asList(s.split(",")))
      .collect(Collectors.toList());
}

0
你可以创建一个 Arraylist<Arraylist<String>> 的结果集,而不是添加行,你可以添加包含分割字符串的数组列表。
代码将如下所示。
ArrayList<ArrayList<String>> result = new ArrayList<ArrayList<String>():
while(input_file.hasNextLine())
{
    String line = input_file.nextLine();
    List<String> myList = new ArrayList<String>(Arrays.asList(line.split(",")));
    result.add(myList);
}

result.get(0)会包含一个拆分后的ArrayList<String>字符串列表。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接