在arrayList中搜索对象,然后多次向同一个对象添加值

时间:2016-06-15 23:07:37

标签: java arrays arraylist

我刚刚开始使用arrayLists - 基本上我需要弄清楚的是如何搜索我的arrayList以及是否找到相同的对象为它添加一个新的总值而不是交换它。

即。

arrayList = (hats, $45) 

我有一个新的价值添加到帽子(即$ 10美元) - 所以帽子的最终新总数= $ 55

...如果帽子不在列表中就已经添加了。

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

除非使用嵌套的ArraysList或Map,否则将无法使用String和Integer填充ArrayList。 但是您可以为ProductName和Price创建一个简单的类,并创建一个包含名称和价格的ArraysList。

public class Products {

private String product;
private int price;

public Products(String product, int price){
    this.product = product;
    this.price = price;
}
public String getProduct(){
    return this.product;
}
public int getPrice(){
    return this.price;
}

@Override
public String toString(){
    return this.product +" "+ this.price;
}



public static void main(String[] args) throws ParseException {

    ArrayList<Products> list = new ArrayList<>();
    list.add(new Products("Hat",45));
    list.add(new Products("Socks",10));

    for (Products gd: list){
        if (gd.getProduct().equals("Hat")){
            int index = list.indexOf(gd);
            list.set(index,new Products(gd.getProduct(),gd.getPrice+10));
        }else {
            // if productName not found
            System.out.println("sorry products not available");
            break;
        }
    }

    System.out.println(list);

}

}

输出:

  

[帽子55,袜子10]

但是如果您不想要所有这个类并且仍然希望使用ArrayList作为作业,那么您可以使用包含名称和价格的ArrayList来执行此操作

ArrayList<String> list = new ArrayList<>();
    list.add("Hat,45");
    list.add("Socks,15");

    for (String ss:list){
        String[] spl = ss.split(",");
        if (spl[0].equals("Hat")){
            int index = list.indexOf(ss);
            int value = Integer.parseInt(spl[1])  +10;
            list.set(index,(spl[0]+","+value));
        }
    }


    System.out.println(list);

输出:

  

[Hat,55,Socks,15]