java - 如何基于 CSV 文件创建类的新实例

标签 java class csv instantiation

假设我有一个类 Car,并且我正在尝试导入大量数据来创建“Car”的多个实例。

我的 CSV 文件的布局如下:

汽车制造商、型号、颜色、车主、MPG、车牌、原产国、VIN 等

重点是,构造函数中需要包含大量数据。如果只有其中几个,通过编写 Car FordFocus = new Car(Ford,Focus,Blue,John Doe,108-J1AZ,USA,194241-12e1.. .),但是如果我有数百个这样的数据,有没有办法导入所有这些数据来创建类?

最佳答案

George提到,你需要一个工具。我用过opencsv之前实现这一目标。

opencsv 为您提供了三种映射策略(可以进一步扩展)用于将 CSV 行映射到 bean。最简单的是ColumnPositionMappingStrategy。因此,如果您的 CSV 格式是固定的,例如标题行如下所示:

汽车制造商、型号、颜色、车主、MPG、车牌、原产国、VIN 等

此代码片段将为您提供帮助。我还使用了 HeaderColumnNameTranslateMappingStrategy,它可以让您将 CSV header 名称映射到 bean 字段名称,例如“汽车制造商”-> 汽车制造商。

  CSVReader csvReader = new CSVReader(new FileReader(csvFile));
  ColumnPositionMappingStrategy<Car> strategy = new ColumnPositionMappingStrategy<Car>();
  strategy.setType(Car.class);
  String[] columns = new String[] {"CarManufacturer","Model","Color","Owner","MPG","LicensePlate","CountryOfOrigin","VIN"}; // the fields to bind do in your JavaBean
  strategy.setColumnMapping(columns);

  CsvToBean<Car> csv = new CsvToBean<Car>();
  List<Car> list = csv.parse(strategy, csvReader);

可以找到一个独立的示例程序 here

关于java - 如何基于 CSV 文件创建类的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27388214/

相关文章:

java - Heroku/Kotlin : java. lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics

swift - 有一段代码涉及到Delegate Up,希望我理解正确

Javascript类构造的对象未定义

python - 将长平面表格(其中每列都包含年份和类别)转换为比较类别和年份的表格

java - 失焦时的小程序生命周期

java - android 小部件 SearchView OnQueryTextListener

java - JanusGraph 中的遍历序列化错误

java - 只能导入一个类型

xml - 将 XML 馈送到 Google 日历

arrays - 如何将csv文件读入scala中的数组数组