在Java中从集合中删除指定数量的项
我正在编写一个类商店,其中包含一个类型为Collection的可变库存。这个类也有从股票中购买和出售股票的方法。本质上,这些方法只是分别从库存中移除和添加到库存中。库存中包含的物品都属于同一产品,因此无需订购收藏品,也无需跟踪物品放置或取走的位置。我对buy方法有问题,其标题定义如下:在Java中从集合中删除指定数量的项,java,collections,Java,Collections,我正在编写一个类商店,其中包含一个类型为Collection的可变库存。这个类也有从股票中购买和出售股票的方法。本质上,这些方法只是分别从库存中移除和添加到库存中。库存中包含的物品都属于同一产品,因此无需订购收藏品,也无需跟踪物品放置或取走的位置。我对buy方法有问题,其标题定义如下: void buy(int n, Collection<T> items) 我需要这个方法做的是1向项目添加一个元素,2从库存中删除一个元素,3重复步骤1和2 n次。我不知道第1步是如何完成的。我认为
void buy(int n, Collection<T> items)
我需要这个方法做的是1向项目添加一个元素,2从库存中删除一个元素,3重复步骤1和2 n次。我不知道第1步是如何完成的。我认为这只能通过迭代器来完成。某种形式:
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
库存现在是:
a
b
,代码到底面临什么问题?Stackoverflow不是我们为您编写代码的地方。。。请尝试,提供代码,然后我们可以回答让您困惑的问题。