小弟不才,遇到一个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中插入个对象的,这似乎与最初目标不符。
请各位高手帮忙,小弟在此先谢谢了。
程序的目标:遍历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中插入个对象的,这似乎与最初目标不符。
请各位高手帮忙,小弟在此先谢谢了。
ItemOrder newOrder = new ItemOrder(Catalog.getItem(itemID));
itemsOrdered.add(newOrder);
了。
也加一了,任务完成了,目标达到了。