Java 在arraylist中设置元素,同时更新其他元素
我有一个带有自定义对象的arraylistJava 在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
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方法替换该位置的上一个元素