슈퍼마켓의 셀프 체크 아웃 카운터와 비슷한 주문 프로그램을 작성 중입니다. 광고 주문이 생성되는 동안 각 광고 항목은 개체이며 arraylist에 보관됩니다.
LineItem 클래스에는 ItemID와 ItemQuantity의 두 가지 변수가 있습니다. 메서드, incQuantity는 수량을 1 씩 증가시키는 데 사용됩니다.arraylist를 작성하고 lineItem을 추가하는 데 아무런 문제가 없지만 동일한 ItemID를 가진 추가 항목이있을 때 incQuantity 메서드를 호출 할 수는 없습니다. get, remove 및 add 시퀀스를 사용하여 객체를 업데이트하고 있습니다. 개체에 직접 액세스하고 arraylist에서 제거하고 다시 추가하는 오버 헤드없이 incQuantity 메서드를 호출하는 방법이 있어야합니다. 아래 테스트 코드를 참조하십시오.arraylist (자바)
orderSheet.get(0).incQuantity()
트릭을 수행해야합니다
public static class LineItem{
private String ItemID ;
private int ItemQuantity;
public LineItem(String ID) {
ItemID = ID;
ItemQuantity = 1; //upon first occurrence of an item, qty is initialized to 1
}
public void incQuantity() {
ItemQuantity++;
}
}
private static void TestItems() {
ArrayList <LineItem> orderSheet = new ArrayList<LineItem>();
LineItem newLine = new LineItem("12345");
orderSheet.add(newLine);
newLine = new LineItem("121233445");
orderSheet.add(newLine);
newLine = new LineItem("129767345");
orderSheet.add(newLine);
newLine = new LineItem("5454120345");
orderSheet.add(newLine);
newLine = new LineItem("0987123125");
orderSheet.add(newLine);
newLine = new LineItem("65561276345");
orderSheet.add(newLine);
// Increment Quantity of Element 0 below
LineItem updateLine = orderSheet.get(0);
updateLine.incQuantity();
orderSheet.remove(0);
orderSheet.add(updateLine);
}