如何从arraylist获取价值并将其存储在不同类别的列表中?

时间:2017-03-04 20:24:14

标签: java arraylist

我有以下设置物品价格的方法:

主要类

public void setShoePrice(){
    int selectionNumber = shoeList.getSelectedIndex();
    Double[] shoesPrices = {1.00, 2.00, 3.00};
    Basket.shoePrice+= shoePrices[selectionNumber];
}

我还有另一个类,这是shoeLibrary类,这是鞋子的arraylist保留的地方。

ShoeLibrary Class

public class ShoeLibrary {

private ArrayList<Shoe> shoes;

public ShoeLibrary() {
    shoes = new ArrayList<Shoe>();
    shoes.add(new Shoe("Shoe 1", 1.00));
    shoes.add(new Shoe("Shoe 2", 2.00));
    shoes.add(new Shoe("Shoe 3", 3.00));
}

所以目前如果我想改变鞋子的价格,我必须在ShoeLibrary类和我的方法中更新它们。我该怎么做才能使方法中的列表从我的ShoeLibrary类中的数组列表中获取值。

请注意。我有另一个名为Shoes的类,它在ShoeLibrary类中有数组列表的setter和getter。

我尝试过创建以下方法但似乎无法将值分配给方法中的shoePrices列表。

public Double[] getShoePrices() {

    Double[] prices = new Double[shoes.size()];

    for (int index = 0; index < shoes.size(); index++) {
        prices[index] = shoes.get(index).getShoePrice();
    }
    return prices;
}

我是java的新手,所以提前感谢。

更新 我在我的setShoePrice方法所在的类中使用它:

public Double[] getShoePrice(){
        ShoeLibrary s = new ShoeLibrary();
        Double prices[] = s.getShoePrices();
        return prices;
    }

对于方法中的arraylist我这样做如下:

Double[] shoesPrices = {getShoePrice()}; 

2 个答案:

答案 0 :(得分:0)

这是你在setShoePrice方法中所做的:

  • 调用获取所有价格数组的方法
  • 查找所选价格
  • 将其添加到购物篮

通过这种方式,您可以保持鞋价两次(一个在鞋库中,另一个在double[]数组中。由于这个原因,如果在库中更新鞋价,您的阵列仍然保持陈旧副本,因此,它返回旧价格。

修复方法是删除使用double[]数组并直接从库中获取价格,例如:

public Double getShoePrice(int index){
   if(index >= shoes.size()){
        throw new IllegalArgumentException("Invalid index");
   }
   return shoes.get(index).getPrice();
}

答案 1 :(得分:0)

尝试替换它:

Double[] shoesPrices = {getShoePrice()}; 

用这个:

Double[] shoesPrices = getShoePrice();