我试图从csv text file中读取一个表,并用java生成一个表(Hashmap
中的List
个).
为此,我读取文本文件的每个line,从line中构造一个Hashmap<String, String>
记录,并在每次迭代结束时将其附加到ArrayList
.
我希望文本文件中每一行的一个实例在列表中只出现一次,但得到的只是文本文件中出现n+1
次的最后一行,n是最后一行号.
代码如下:
public static void main(String[] args) throws IOException {
FileReader filObj = null;
try {
filObj = new FileReader(new File(System.getProperty("user.home") + "\\Desktop\\testData.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
BufferedReader br = new BufferedReader(filObj);
List<String> headers = new ArrayList<String>();
List<HashMap<String, String>> myTable = new ArrayList<HashMap<String, String>>();
HashMap<String, String> myRecord = new HashMap<String, String>();
String line = null;
int ext = 0;
while ((line = br.readLine()) != null) {
//System.out.println(line);
if (ext == 0) {
headers = Arrays.asList(line.split(","));
} else {
int index = 0;
for (String each : line.split(",")) {
myRecord.put(headers.get(index), each);
index++;
}
System.out.println("myrecord:" + myRecord);
}
myTable.add(myRecord);
ext++;
System.out.println("My Table:" + myTable);
}
}
testData.txt
个文件内容如下
TransactionNumber,TransactionType,Amount,TransactionDate,TransactionRemarks
123456,Credit,4000,07/10/2021,Salary Credited
123333,Debit,7000,05/10/2021,Fuel
123446,Credit,3000,01/10/2021,Refund
控制台输出如下:
My Table:[{}]
myrecord:{TransactionType=Credit, TransactionNumber=123456, Amount=4000, TransactionRemarks=Salary Credited, TransactionDate=07/10/2021}
My Table:[{TransactionType=Credit, TransactionNumber=123456, Amount=4000, TransactionRemarks=Salary Credited, TransactionDate=07/10/2021}, {TransactionType=Credit, TransactionNumber=123456, Amount=4000, TransactionRemarks=Salary Credited, TransactionDate=07/10/2021}]
myrecord:{TransactionType=Debit, TransactionNumber=123333, Amount=7000, TransactionRemarks=Fuel, TransactionDate=05/10/2021}
My Table:[{TransactionType=Debit, TransactionNumber=123333, Amount=7000, TransactionRemarks=Fuel, TransactionDate=05/10/2021}, {TransactionType=Debit, TransactionNumber=123333, Amount=7000, TransactionRemarks=Fuel, TransactionDate=05/10/2021}, {TransactionType=Debit, TransactionNumber=123333, Amount=7000, TransactionRemarks=Fuel, TransactionDate=05/10/2021}]
myrecord:{TransactionType=Credit, TransactionNumber=123446, Amount=3000, TransactionRemarks=Refund, TransactionDate=01/10/2021}
My Table:[{TransactionType=Credit, TransactionNumber=123446, Amount=3000, TransactionRemarks=Refund, TransactionDate=01/10/2021}, {TransactionType=Credit, TransactionNumber=123446, Amount=3000, TransactionRemarks=Refund, TransactionDate=01/10/2021}, {TransactionType=Credit, TransactionNumber=123446, Amount=3000, TransactionRemarks=Refund, TransactionDate=01/10/2021}, {TransactionType=Credit, TransactionNumber=123446, Amount=3000, TransactionRemarks=Refund, TransactionDate=01/10/2021}]