Java 如何使用OpenCSV解析多行记录?

Java 如何使用OpenCSV解析多行记录?,java,opencsv,Java,Opencsv,我正在尝试使用OpenCSV解析类似于此的文件- CUST,Warren,Q,Darrow,8272 4th Street,New York,IL,76091 TRANS,1165965,2011-01-22 00:13:29,51.43 CUST,Erica,I,Jobs,8875 Farnam Street,Aurora,IL,36314 TRANS,8116369,2011-01-21 20:40:52,-14.83 TRANS,8116369,2011-01-21 15:50:17,-4

我正在尝试使用OpenCSV解析类似于此的文件-

CUST,Warren,Q,Darrow,8272 4th Street,New York,IL,76091
TRANS,1165965,2011-01-22 00:13:29,51.43
CUST,Erica,I,Jobs,8875 Farnam Street,Aurora,IL,36314
TRANS,8116369,2011-01-21 20:40:52,-14.83
TRANS,8116369,2011-01-21 15:50:17,-45.45
TRANS,8116369,2011-01-21 16:52:46,-74.6
TRANS,8116369,2011-01-22 13:51:05,48.55
TRANS,8116369,2011-01-21 16:51:59,98.53
我将使用Customer对象读取以“CUST”开头的记录。Customer对象将包含一个事务列表

public class Customer {
      private String firstName;
      private String middleInitial;
      private String lastName;
      private String address;
      private String city;
      private String state;
      private String zipCode;
      List<Transaction> transactions;
      ...
}
一个客户可以有一个或多个交易。尽管如此,我还是能够使用CSVReader来实现这一点。我可以使用注释实现同样的效果吗

CSV文件是列表,对吗?嗯,有些人喜欢列表中的列表

OpenCSV似乎只能处理单个“物理”CSV记录中的子列表,而且似乎有一种方法可以处理您的情况。但是,如果可以逐个记录解析输入CSV文档记录,则可以将解析组织到组解析中,以便在组准备就绪后,您可以自己对其进行反序列化

比如说,


public static Stream readGroups(@WillClose final CSVReader CSVReader,final predicateEyes,有一种方法可以实现此功能。是的,OpenCSV可以用于解析多行记录。--仅供参考:因为,正如您所见,我刚刚完整地回答了这个问题,它非常有用,是吗?“如何?”您可以查看文档,例如的javadoc,以查看是否有一个似乎有用的方法。似乎
for(String[]record:csvReader){/*process record here*/}
可能有用。“有人能帮我吗?”基本上是要求我们为您编写代码。您尝试了什么?是什么阻止了您的开始?您是否进行了尽职调查,即您是否进行了任何研究,如跟踪?请参阅:感谢您指导我编写了一个有效的问题。早些时候,我尝试使用注释阅读bean,可能是OpenCSV对于这样的文件没有此功能。正如@Andreas所建议的,我可以使用CSVReader和setter来填充对象。
public class Transaction {
    private String accountNumber;
    private Date transactionDate;
    private Double amount;
    ...
}
CUST,Warren,Q,Darrow,8272 4th Street,New York,IL,76091
TRANS,1165965,2011-01-22 00:13:29,51.43
CUST,Erica,I,Jobs,8875 Farnam Street,Aurora,IL,36314
TRANS,8116369,2011-01-21 20:40:52,-14.83
TRANS,8116369,2011-01-21 15:50:17,-45.45
TRANS,8116369,2011-01-21 16:52:46,-74.6
TRANS,8116369,2011-01-22 13:51:05,48.55
TRANS,8116369,2011-01-21 16:51:59,98.53
Customer(firstName=Warren, middleInitial=Q, lastName=Darrow, address=8272 4th Street, city=New York, state=IL, zipCode=76091, transactions=[Transaction(accountNumber=1165965, transactionDate=2011-01-22T00:13:29, amount=51.43)])
Customer(firstName=Erica, middleInitial=I, lastName=Jobs, address=8875 Farnam Street, city=Aurora, state=IL, zipCode=36314, transactions=[Transaction(accountNumber=8116369, transactionDate=2011-01-21T20:40:52, amount=-14.83), Transaction(accountNumber=8116369, transactionDate=2011-01-21T15:50:17, amount=-45.45), Transaction(accountNumber=8116369, transactionDate=2011-01-21T16:52:46, amount=-74.6), Transaction(accountNumber=8116369, transactionDate=2011-01-22T13:51:05, amount=48.55), Transaction(accountNumber=8116369, transactionDate=2011-01-21T16:51:59, amount=98.53)])