具有相同值的项目列表

我正在创建一个文件列表

BufferedReader reader = new BufferedReader( new InputStreamReader(new FileInputStream("H:/temp/data.csv"))); try { List items = new ArrayList(); Item item = new Item(); String line = null; while ((line = reader.readLine()) != null) { String[] split = line.split(","); item.name = split[0]; item.quantity = Integer.valueOf(split[1]); item.price = Double.valueOf(split[2]); item.total = item.quantity * item.price; items.add(item); } for (Item item2 : items) { System.out.println("Item: " + item2.name); } } catch (IOException e) { reader.close(); e.printStackTrace(); } 

问题是列表显示文件中的最后一行作为所有项的值。

您的代码的问题是您只创建一个Item Object实例( Item item = new Item ),同一个实例一次又一次地添加到列表中。

您需要为文件中的每一行创建一个新的Item实例,并将其添加到列表中,如下所示。

固定:

 List items = new ArrayList(); String line = null; while ((line = reader.readLine()) != null) { String[] split = line.split(","); Item item = new Item(); // New Item is created for every line item.name = split[0]; item.quantity = Integer.valueOf(split[1]); item.price = Double.valueOf(split[2]); item.total = item.quantity * item.price; items.add(item); }