我正在从一个文件中创建一个项目列表
BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream("H:/temp/data.csv")));
try {
List<Item> items = new ArrayList<Item>();
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<Item> items = new ArrayList<Item>();
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);
}
关于java - 具有相同值的项目列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4574218/