在arraylist中访问和对象(java)

时间:2014-11-22 06:19:17

标签: java arraylist

我正在开发一个类似于超市自助结账柜台的订单计划。在创建订单时,每个订单项都是一个对象,并保存在一个arraylist中 LineItem类有两个变量 - ItemID和ItemQuantity。方法,incQuantity用于将数量增加1。 我创建arraylist并向其添加lineItems没有问题,但是当遇到具有相同ItemID的其他项时,我无法调用incQuantity方法。 我使用get,remove和添加序列来更新对象。 在我看来,必须有一种方法可以直接访问对象并调用incQuantity方法,而无需从arraylist中删除它并再次添加它。 请参阅下面的测试代码。

 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);

}

3 个答案:

答案 0 :(得分:1)

您不必删除重新添加它,只需获取该项并调用其方法:

orderSheet.get(0).incQuantity()应该可以解决问题。

答案 1 :(得分:0)

我的建议是使用简单的Hashmap来解决这个问题。地图将简单地将项目ID作为键,将项目类别作为值。 item类还有一个增量计数器方法。 这样,您可以检查项目ID是否在地图上,如果是,则调用方法以增加计数。

答案 2 :(得分:0)

请看这个。我举一个例子来增加orderSheet中所有项目的数量。但我想你需要在调用incQuantity()时检查项目ID。

Iterator<LineItem> it = orderSheet.iterator();
while(it.hasNext()) {        
    it.next().incQuantity();
}