小弟不才,遇到一个java问题百思不得其解,后臆想出一解释,但不知对否,望各高手指点,感激不尽。
程序的目标:遍历ArrayList,察看集合其中对象是否有满足条件者,若有则将此对象的itemnum参数加一(用incrementNumItems()方法)若没有则在集合中加一个对象。
代码如下:
/** Looks through cart to see if it already contains
   *  an order entry corresponding to item ID. If it does,
   *  increments the number ordered. If not, looks up
   *  Item in catalog and adds an order entry for it.
   */
  private ArrayList itemOrdered;
  public synchronized void addItem(String itemID) {
    ItemOrder order;
    for(int i=0; i<itemsOrdered.size(); i++) {
      order = (ItemOrder)itemsOrdered.get(i);
      if (order.getItemID().equals(itemID)) {
        order.incrementNumItems();
        return;
      }
    }
    ItemOrder newOrder = new ItemOrder(Catalog.getItem(itemID));
    itemsOrdered.add(newOrder);
  }
其中我不太明白if语句中的return是何作用,猜想是order = (ItemOrder)itemsOrdered.get(i)先使得
order引用itemsOrdered中的满足条件的对象,然后通过order.incrementNumItems()对引用的对象进行参数的修改,最后return的作用是什么呢?
而且还有个问题是这段程序的作用是当在Arraylist中没有满足if (order.getItemID().equals(itemID))的对象时才创建个新的ItemOrder对象并把它插入到itemsOrdered中,但是我认为这段代码先是通过for遍历ArrayList找到并修改相应的对象但是,由于itemsOrdered.add(newOrder);在for之外,所以不管是否for找到相应的对象,最后都会在ArrayLIst中插入个对象的,这似乎与最初目标不符。
请各位高手帮忙,小弟在此先谢谢了。

解决方案 »

  1.   

    有了return,当满足order.getItemID().equals(itemID)条件时,就不再执行后面的
        ItemOrder newOrder = new ItemOrder(Catalog.getItem(itemID));
        itemsOrdered.add(newOrder);
    了。
      

  2.   

    请问是否是跳出 addItem(String itemID)这个方法,因为是第一次看到这样的例子所以不太能理解。
      

  3.   

    对头,return 就是跳出addItem(String itemID)方法了。下面的不做了,因为找到了,itemnum
    也加一了,任务完成了,目标达到了。