2017-01-29 10 views
0

私はカスタムオブジェクトを持つarraylistを1人持っています。他の要素を更新するarraylistの要素を設定する

私はArrayListの中に任意の新しいオブジェクトを追加し、これまで、私はArrayListのを横断することによりdiscountPriceへのすべての要素の価格を設定します
Object { 
    String price; 
    String discountedPrice; 
    int discount; 
    String id; 
    } 

問題文: Arraylistに追加された新しいオブジェクトは、以前のオブジェクトに対して割引を適用します。例: Rs.399、Rs。 499、Rs。 399がarraylistに追加されました。 だから399には割引が加えられませんでした。 499を追加した場合、399で2%割引を適用します。 399は399-2%= 392になります。 399が追加された場合、499と392-2%で2%の割引が適用されます。 私はまず、すべての価格をdiscountedPriceに設定するという共通の方法を1つ追加しました。 次に、arraylistのサイズを確認して、サイズ-2までトラバースすると、最後に2番目に値引きが適用されます。 int diffこの要素の後に、そのオブジェクトに割引を適用する要素の数を確認するために使用します。

しかし、要素のidがすべて同じであれば、すべての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); 
} 
+0

Beanクラスにgetterメソッドとsetterメソッドを必要としていたでしょうか? –

+0

以前のオブジェクトに割引を適用する場合、インデックスの後の要素をチェックするのはなぜですか? – dev8080

答えて

0

希望はこのことができますが、あなたは

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); 
} 
+0

私はすでにそのオブジェクトを価格を計算し、その位置に設定する必要があります。オブジェクトを作成してarraylistに追加すると、別の要素が追加されます。 –

+0

あなたの質問を誤解しているかもしれません。しかし、前の要素をすべて更新したい場合は、新しいオブジェクトを追加する前に、ArrayListのすべての要素を更新してください(インデックスを計算する必要はありません)。 –

+0

uを更新するとオブジェクトを取得できます...変更を加え、setメソッドを使用して、その位置の優先エレメントを置き換えます –

関連する問題