如何在java中的向量中存储多个数据类型的集合?

时间:2016-06-08 23:04:35

标签: java

我来自c ++背景,在c ++中我们可以使用指针并在向量中存储多个数据类型的集合,但是我们如何在java中执行此操作。 例如,我想存储: {name,price / pound,weight} {name,price} 这是一种面包店收据计划。

2 个答案:

答案 0 :(得分:2)

Java是一种非常面向对象的语言,它严重依赖于类和对象。您可能会发现为Receipt创建类更容易,然后只存储数组收据

但是,您可能想要或不想在Products课程中列出Receipt。这样,您可以在一张收据上拥有多个项目。这也需要一个Product课程,而在Receipt课程中,您可以将namepricePerPoundweight更改为产品列表,而你的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>并在检索时强制转换可以在集合中存储不同的类,但出于各种原因,这不是推荐的方法。