在构造函数中使用Arraylist

时间:2013-05-01 14:14:09

标签: java 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>();
     }

5 个答案:

答案 0 :(得分: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访问Store实例的项目。

答案 1 :(得分: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);
   }
}

答案 2 :(得分:1)

老实说,我建议使用HashMap。将每个商店作为密钥或商店ID,然后将Stock列表作为值。这将允许您简单地执行:

Map storeMap = new HashMap<String, List<Stock>();
items = storeMap.get(key);

答案 3 :(得分: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;
    }
}

答案 4 :(得分: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;
}