我正在编写一个包含Shop<T>
类型变量stock
的课程Collection<T>
。该类还有从股票买入并卖给股票的方法。基本上,这些方法分别从库存中删除并添加到库存中。库存包含所有相同产品的商品,因此无需订购商品或跟踪商品的位置或放置或取出的位置。我在使用buy方法时遇到问题,其标题定义如下:
void buy(int n, Collection<T> items)
我需要这个方法做的是(1)向items
添加一个元素,(2)从stock
中删除一个元素,以及(3)重复步骤1和2 {{1时间。我无法弄清楚步骤1。
答案 0 :(得分:2)
我认为这只能通过迭代器完成。形式的东西:
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Shop<T> {
private Collection<T> stock = new ArrayList<>();
public Shop(T[] data) {
stock.addAll(Arrays.asList(data));
}
public void buy(int n, Collection<T> items) {
final Iterator<T> iter = stock.iterator();
for (int i = 0; i < n; i++) {
if (iter.hasNext()) {
final T item = iter.next();
items.add(item);
iter.remove();
System.out.println("Bought "+item.toString());
}
else {
System.out.println("Out of stock.");
break;
}
}
}
public static void main(String args[]) {
final String data[] = {"a", "b", "c"};
final Shop<String> s = new Shop<>(data);
final Collection<String> inventory = new ArrayList<>();
s.buy(2, inventory);
System.out.println("Inventory is now: ");
for (String str : inventory) {
System.out.println(" "+str);
}
}
}
这将吐出:
买了
买了b
现在是库存:
一
B'/ P>