在arraylist中设置元素也可以更新其他元素

时间:2017-01-29 06:57:25

标签: java android arraylist

我有一个带有自定义对象的arraylist。

    Object {
    String price;
    String discountedPrice;
    int discount;
    String id;
   }

当我在Arraylist中添加任何新对象时,我会通过遍历arraylist将所有元素的价格设置为discountPrice。

问题陈述: 每当Arraylist中添加的新对象对先前对象应用折扣时。 例如Rs.399,Rs。 499,卢比。 399添加了arraylist。 所以当399添加没有折扣。 当499添加399适用2%折扣。 然后399成为399-2%= 392。 然后当399添加499和392-2%时适用2%折扣。 我添加了一种常用方法,首先将所有价格设置为discountedPrice。 然后检查arraylist的大小,遍历大小-2表示应用折扣的第二个最后一个元素。 int diff用于检查此元素之后有多少元素对该对象应用折扣。

但是,只要元素的id相同,它就适用于所有ID。

private void calculateDiscounted() {
    int size = arraylist1.size();
    if(size > 1){
        int index = size - 2;
        for(int i = 0; i <= index; i++){
                   int diff = index - i ;
                calculateDiscountPrice(diff, arraylist1.get(i), i);

        }
    }
}

private void calculateDiscountPrice(int diff, CustomObject object, int position) {
    CustomObject object = object;
    for( int i = 0; i <= diff; i++){
        int discount = 2;
        int price = Integer.valueOf(object.getDiscoutprice());
        int amtDiscount = (price * discount) / 100;
        int discountPrice = price - amtDiscount;
        object.setDiscount(amtDiscount);
        object.setdiscountedPrice(String.valueOf(discountPrice));
    }
    arraylist1.set(position, object);
}

1 个答案:

答案 0 :(得分:0)

希望这会有所帮助,但您应该在Bean类中使用getter和setter方法

void addNewObject(Custom object, ArrayList<CustomObject> al){
  for(int i = 0;i<al.size();i++){
    CustomObject c=al.get(i);
    int price=c.getPrice();
    int discount=0.02*price;
    c.setDiscount(discount);
    c.setDiscountedPrice(price-discount);
    al.set(i,c);
  }
  al.add(object);
}