如何创建一个循环,从一行到另一行分割每一行的ArrayList?

时间:2015-11-20 10:46:24

标签: java loops arraylist while-loop split

我有一个访问文件的函数,并将每一行设置为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);
}
从这里开始,我有点难过。我知道下面的代码将占用文件的第1行&#34; a,1,3,b&#34;并在新的arraylist中将其拆分为新的字符串。

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

有没有办法将这两者结合起来,这样我就可以遍历每一行并拆分一切?从这里开始,我也想知道如何将某些列中的数字加在一起。我知道我可能必须使用for循环来调用每个第n个值(作为列#)并编写一个if语句,只通过通过解析语句检查它们来获取数字列中的值,然后添加它们

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

您可以制作$field1 = 'foo'; $field2 = 'bar'; $insert_QUERY = $db->prepare("INSERT INTO table bogus(field1, field2) VALUES (:field1, :field2)"); $insert_QUERY->bindParam(':field1', $field1); $insert_QUERY->bindParam(':field2', $field2); $insert_QUERY->execute(); $databaseErrors = $insert_QUERY->errorInfo(); if( !empty($databaseErrors) ){ $errorInfo = print_r($databaseErrors, true); # true flag returns val rather than print $errorLogMsg = "error info: $errorInfo"; # do what you wish with this var, write to log file etc... /* $errorLogMsg will return something like: error info: Array( [0] => 42000 [1] => 1064 [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table bogus(field1, field2) VALUES ('bar', NULL)' at line 1 ) */ } else { # no SQL errors. } 结果,而不是添加行,您可以添加包含分割字符串的arraylist。

代码看起来像这样。

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)