我来自c ++背景,在c ++中我们可以使用指针并在向量中存储多个数据类型的集合,但是我们如何在java中执行此操作。 例如,我想存储: {name,price / pound,weight} {name,price} 这是一种面包店收据计划。
答案 0 :(得分:2)
Java是一种非常面向对象的语言,它严重依赖于类和对象。您可能会发现为Receipt
创建类更容易,然后只存储数组收据
但是,您可能想要或不想在Products
课程中列出Receipt
。这样,您可以在一张收据上拥有多个项目。这也需要一个Product
课程,而在Receipt
课程中,您可以将name
,pricePerPound
,weight
更改为产品列表,而你的Product
类会存储这些变量。然后每个产品都有一个名称,每磅价格和一个重量
public class Receipt {
String name;
double pricePerPound;
double weight;
//Constructor
public Receipt() {
}
//Other methods can go here, like getters and setters
}
然后你可以拥有一个Receipts
Receipt[] receipts = new Receipt[10];
或者您可以使用java.util.ArrayList
来获取大小不同的数据类型
ArrayList<Receipt> receipts = new ArrayList<>(); //ArrayList of type Receipt
有关可以使用的方法,请参阅ArrayList文档
答案 1 :(得分:1)
在Java中执行此操作的正确方法是创建一个接口,该接口表示要存储在集合中的对象的公共属性,然后让这些对象的每个类实现该接口。
interface BakeryItem {
String getName();
float getPrice();
}
class WeightedItem {
private final float weight;
private final float pricePerPound;
public float getPrice() {
return weight * pricePerPound;
}
}
List<BakeryItem> bakeryItems;
如果您需要使用不同类的特定属性,那么我建议使用visitor pattern将逻辑与数据分开。
使用List<Object>
并在检索时强制转换可以在集合中存储不同的类,但出于各种原因,这不是推荐的方法。