将数据从CSV读取到Java

时间:2016-07-02 05:38:31

标签: java csv multidimensional-array

我正在尝试使用以下格式转换.csv文件(使用任意数量的列):

a,b,c
d,e,f
g,h,i

进入int [] []就像这样:

int[][] a = {{a,b,c},{d,e,f},{g,h,i}}
在Java中

。我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

我不会给出完整的答案(有些部分你应该能够自己查找),但是:

1)使用split()将输入行拆分为字段。结果是String[]

2)将每个String转换为int的最简单方法是使用流。如果fieldsString[],那么您可以使用:

 int[] ints = Arrays.stream(fields).mapToInt(Integer::parseInt).toArray();

这假设没有任何解析错误。如果要优雅地处理无效输入,可能需要使用循环而不是流。

要解决这个问题:Arrays.stream会创建一个"流"它为您提供了数组中的所有StringsmapToInt将流转换为IntStreamint的流;请注意,当元素具有int等基本类型时,会有特殊的流类型。它通过应用方法Integer.parseInt来执行此操作,该方法采用String参数并返回inttoArray上的IntStream会从流中构建int[]

3)使用ArrayList<int[]>来保存所有行的数组,因为您事先并不知道将会有多少行。如果您需要int[][],可以稍后将ArrayList转换为数组。

答案 1 :(得分:0)

最简单的方法是使用互联网上可以找到的众多CSV解析器之一。例如https://commons.apache.org/proper/commons-csv/

如果您想手动执行此操作,可以逐行读取文件并使用StringTokenizer将每行拆分为令牌,然后可以将其解析为适当的Java类型。