Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在arraylist中设置元素,同时更新其他元素_Java_Android_Arraylist - Fatal编程技术网

Java 在arraylist中设置元素,同时更新其他元素

Java 在arraylist中设置元素,同时更新其他元素,java,android,arraylist,Java,Android,Arraylist,我有一个带有自定义对象的arraylist Object { String price; String discountedPrice; int discount; String id; } 当我在Arraylist中添加任何新对象时,我将通过遍历Arraylist将所有元素的价格设置为折扣价格 问题陈述: 每当在Arraylist中添加新对象时,都会对以前的对象应用折扣。 e、 arraylist中添加了g.Rs.399、Rs.499、Rs.39

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

    Object {
    String price;
    String discountedPrice;
    int discount;
    String id;
   }
当我在Arraylist中添加任何新对象时,我将通过遍历Arraylist将所有元素的价格设置为折扣价格

问题陈述: 每当在Arraylist中添加新对象时,都会对以前的对象应用折扣。 e、 arraylist中添加了g.Rs.399、Rs.499、Rs.399。 所以当399加上没有折扣。 当添加499时,在399上应用2%的折扣。 然后399变成399-2%=392。 然后,当添加399时,对499和392-2%应用2%的折扣。 我添加了一个常用方法,首先将所有价格设置为折扣价格。 然后检查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);
}
private void calculateDiscounted(){
int size=arraylist1.size();
如果(大小>1){
int指数=大小-2;

for(inti=0;i希望这有帮助,但您应该在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);
}
void addNewObject(自定义对象,ArrayList al){

for(inti=0;i希望这有帮助,但您应该在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);
}
void addNewObject(自定义对象,ArrayList al){

对于(int i=0;iSo为什么不在更新行之前检查ID?为什么要在对以前的对象应用折扣时检查索引后的元素?为什么不在更新行之前检查ID?为什么要在对以前的对象应用折扣时检查索引后的元素?我已经有了那个对象,只需要计算一下定价并设置到该位置。如果我创建对象,然后添加到arraylist,它将添加另一个元素。可能我误解了你的问题。但是如果你想在添加新对象之前更新所有以前的元素,则更新arraylist中的所有元素(无需计算索引)。要更新,你可以获取对象…进行更改,然后使用set方法替换该位置的上一个元素。我已经有了该对象,只需要计算价格并设置到该位置。如果我创建对象,然后添加到arraylist,它将添加另一个元素。可能我误解了你的问题。但是如果你想升级在添加新对象之前,更新ArrayList中的所有元素(无需计算索引)。要更新u,可以获取对象…进行更改,然后使用set方法替换该位置的上一个元素