2017-01-29 16 views
0

사용자 지정 개체가있는 arraylist가 하나 있습니다.다른 요소를 업데이트하는 arraylist의 요소 집합

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

내가 ArrayList를에서 새로운 개체를 추가 이제까지 내가 ArrayList를 횡단하여 discountPrice 모든 요소의 가격을 설정합니다합니다.

문제 선언문 : Arraylist에 추가 된 새 개체는 이전 개체에 할인을 적용합니다. 예 : Rs.399, Rs. 499, Rs. 399가 arraylist에 추가되었습니다. 그래서 399에 할인이 추가되지 않았습니다. 499 추가시 399에 2 % 할인 적용. 그러면 399는 399-2 % = 392가됩니다. 399가 추가 된 경우 499 및 392-2 %에 2 % 할인이 적용됩니다. 먼저 모든 가격을 discountedPrice로 설정하는 일반적인 방법을 하나 추가했습니다. 그런 다음 arraylist의 크기를 확인하고 크기가 -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 메서드를 사용하십시오. –

관련 문제