2013-05-01 75 views
1

我有一個股票列表作爲一個類,然後是一個具有下面顯示的構造函數的商店類。商店有一個鏈接到股票類的數組列表。在構造函數中使用Arraylist

我如何訪問某個商店的數組列表?

E.G.如果我選擇店鋪argos,我想要它所有的庫存。每家店都有自己的股票

public Store(int storeId, String name, String location){ 
     this.storeId = storeId; 
    this.name = name; 
    this.location = location; 
     items = new ArrayList<Stock>(); 
    } 
+1

一個私有的局部變量,一個getter? – Keppil 2013-05-01 14:16:38

回答

3

如果每個Store都有它自己的Stock項目列表中,那麼這將是一個屬性,或私人實例變量,該類股票。然後可以使用getter訪問Store的項目,例如。

public class Store { 
    private List<Stock> items; 

    public Store(List<Stock> items){ 
     this.items = items; 
    } 

    public List<Stock> getStock(){ 
     // get stock for this Store object. 
     return this.items; 
    } 
    public void addStock(Stock stock){ 
     this.getStock().add(stock); 
    } 
} 

然後,您可以使用Stock項目的getter訪問商店實例的商品。

1

可以以這種方式提供安全訪問,但如果您沒有爲用戶提供密鑰並返回庫存清單,那麼封裝效果會更好。

public class Store { 
    private List<Stock> stock; 

    public Store(List<Stock> stock) { 
     this.stock = ((stock == null) ? new ArrayList<Stock>() : new ArrayList<Stock>(stock)); 
    } 

    public List<Stock> getStock() { 
     return Collections.unmodifiableList(this.stock); 
    } 
} 
+0

我最喜歡blackpanther的回答。他的「addStock」是正確的想法。 – duffymo 2013-05-01 17:05:31

0

有很多可能性的列表中設置爲Store對象,並用getter可以return列表後面。

public Store(int storeId, String name, String location,ArrayList<Stock> list){ 
    this.storeId = storeId; 
    this.name = name; 
    this.location = location; 
    this.items = new ArrayList<Stock>(); //or any possibility to set list 
} 

public ArrayList<Stock> getListOfStock(){ 
    return this.items; 
} 
1

說實話,我會建議使用HashMap。將每個商店作爲關鍵字或商店ID,然後將庫存列表作爲值。這將讓你簡單地做:

Map storeMap = new HashMap<String, List<Stock>(); 
items = storeMap.get(key); 
1
public class Store { 
    private List<Stock> items; 

    public Store(int storeId, String name, String location){ 
     this.storeId = storeId; 
     this.name = name; 
     this.location = location; 
     items = new ArrayList<Stock>(); 
    } 

    public List<Stock> getAllStock(){ 
     return this.items; 
    } 
}