2016-06-08 48 views
1

我來自c + +背景和c + +我們可以使用指針和存儲在一個向量多個數據類型的集合,但我們如何在java中做到這一點。 例如,我想存儲: {名稱,價格/磅,重量} {名稱,價格} 這是一種麪包店收據計劃。如何在java中的向量中存儲多個數據類型的集合?

+0

BakeryItem似乎只需要一個類...所以你創建一個Vector(最好是Arraylist)存儲的對象 –

+0

這太籠統了,不能提供有用的答案。我們應該看看你的課程是什麼樣的,你想要做什麼,以及你堅持什麼。 – shmosel

+0

@shmosel這對於C++程序員來說不是太普通。我們習慣於把各種各樣的東西粘在各種地方,其中有些並不完全合適。指針可以是美麗而有用的東西。 –

回答

2

Java是一種非常面向對象的語言類型,它非常依賴類和對象。您可能會發現更容易爲Receipt授課,然後只需存儲陣列收據

但是,您可能會也可能不希望在Receipt類中擁有Products列表。通過這種方式,您可以在單個收據上包含多個項目。這也需要一個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

在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>可以在檢索中存儲不同的類,並在檢索時進行投射,但由於各種原因,這不是建議的方法。

相關問題