将Java CSV数据放入数组
我在尝试将excel文件转换为arraylist或仅转换为包含存储在不同单元格中的信息的数组时遇到一些问题。 信息存储在excel中,如下示例所示: 业主信息;车主;汽车销售商 日期;汽车品牌;门的数量;汽车牌照;汽车颜色; 价格 2.3.2013;法令4.23-21-AA;黑色10000 2.1.2014;雷诺;4.23-12-BA;蓝色25000 我需要访问诸如getBrand()、getLicense等信息,所以我想将这些不同的信息存储到ArrayList、OwnerInfo[Owner[],Seller[]中 后来我想对汽车价格或其他东西进行求和,正因为如此,我想访问CarInfo[6]并将其全部求和 我有点迷糊了,需要一些建议或提示将Java CSV数据放入数组,java,arrays,csv,arraylist,split,Java,Arrays,Csv,Arraylist,Split,我在尝试将excel文件转换为arraylist或仅转换为包含存储在不同单元格中的信息的数组时遇到一些问题。 信息存储在excel中,如下示例所示: 业主信息;车主;汽车销售商 日期;汽车品牌;门的数量;汽车牌照;汽车颜色; 价格 2.3.2013;法令4.23-21-AA;黑色10000 2.1.2014;雷诺;4.23-12-BA;蓝色25000 我需要访问诸如getBrand()、getLicense等信息,所以我想将这些不同的信息存储到ArrayList、OwnerInfo[Owner[
public static void main(String args[]) {
try {
FileInputStream fstream = new FileInputStream(
"file.csv");
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
while ((strLine = br.readLine()) != null) {
String[] tokens = strLine.split(";");
for (int i = 0; i < tokens.length; i++) {
System.out.println(tokens[i]);
}
}
in.close();
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
}
publicstaticvoidmain(字符串参数[]){
试一试{
FileInputStream fstream=新FileInputStream(
“file.csv”);
DataInputStream in=新的DataInputStream(fstream);
BufferedReader br=新的BufferedReader(新的InputStreamReader(in));
弦斯特林;
而((strLine=br.readLine())!=null){
String[]tokens=strLine.split(“;”);
对于(inti=0;i
}
另一个问题是我何时使用
for (int i = 0; i < tokens.length; i++) {
System.out.println(tokens[0]);
}
for(inti=0;i
它将打印excel(.csv)的第一列,但如果我打印令牌[1],它将不会打印任何内容。为什么
此外,如果我在.txt文件上执行相同的操作,它将打印第二个“列”。可能您可以重新考虑您的“设计”。现在要做的是,将每一行存储在java数组中。这不便于您以后处理(如您所述) 您可以考虑以下两种选择:
- 如果您喜欢数组,您可以构建一个
第一个字符串,是标题行的标签,如映射
,门的编号
当然您可以使用一些简短的名称,数组就是列。因此,如果需要一些列数据,只需车主…
。如果你可以使用第三方LIB,考虑一些扩展的映射类型,如<代码> Multuap < /Go> >番石榴,以便于实现。map.get(name)
- 您可以为每一行构建自己的类型(类),如
,并为每一行生成每个CarData
对象,将它们打包到一个集合中。如果需要,您可以构建一些helper方法来从列表中获取感兴趣的值CarData
carsStream = new SsvStreamBuilder<Car>()
.withSeparator(";")
.forEntity(Car.class)
.stream("~/path/to/file");
carsStream=new-SsvStreamBuilder()
.带分隔符(“;”)
.forEntity(汽车类)
.stream(“~/path/to/file”);
瞧,使用bean流而不是数组。我看到的是,您正在一个网格上拆分;当您使用csv时,这意味着您的分隔符是一个逗号,当我使用“;”作为分隔符时,它似乎只起“作用”。您可以尝试将excel保存为csv,然后使用“打开方式”选项在记事本中打开csv文件。然后将这些信息添加到你的帖子中,这会有所帮助。