这是我的ProductcatalogClass :
public class ProductcatalogClass {
private ArrayList<ProductClass> productlist;
public ArrayList addproduct() {
// ...
return productlist;
}
}
这是我的ProductClass :
public class ProductClass {
private String productName;
private String availability;
private int price;
// getters and setters
}
...
我该如何解决这个问题? 我知道有些方法尚未完成但我无法完成,直到我弄清楚如何修复此arrayList问题
答案 0 :(得分:1)
您正在使用单个Product
(我将其重命名为更好的名称)对象并将其重复添加到列表中,因此难怪您为什么会这样做。你可以为更好(和正确)的代码做些什么,在这个类中有一个构造函数,可以构造一个新实例并设置所有成员。对于更短的代码,您可以使用3个列表(每个属性一个)并迭代它们。然而,这不能很好地扩展到更大的数字或属性,所以我不会显示它。
在Product
中创建一个构造函数:
public class Product {
private String productName;
private String availability;
private int price;
public Product(String productName, String availability, int price) {
this.productName = productName;
this.availability = availability;
this.price = price;
}
}
在目录类中:
public List<Product> addproduct() {
productList.addAll(Arrays.asList(
new Product("Dell_1", "Available", 600),
new Product("Dell_2", "Available", 800),
new Product("Dell_3", "Available", 590),
new Product("Dell_4", "Available", 400),
new Product("Dell_5", "Available", 700),
new Product("Dell_6", "Available", 530),
new Product("Dell_7", "Available", 550),
new Product("Dell_8", "Available", 500),
new Product("Dell_9", "Available", 700),
new Product("Dell_10", "Available", 600));
return productList;
}
在此阶段,您可以看到此方法没有意义,因为您始终添加完全相同的产品集。如果我不知道你打算怎么做,我就无法进一步回答。
答案 1 :(得分:1)
当您向Product
添加productList
时,实际上只添加了对该对象的引用(类似于C中的指针)。因此,如果将相同的对象添加到列表中十次,您将拥有一个对一个对象的十个引用的列表。
每次要将其添加到列表中时,都应创建新的Product
。