在Java中从集合中删除指定数量的项

在Java中从集合中删除指定数量的项,java,collections,Java,Collections,我正在编写一个类商店,其中包含一个类型为Collection的可变库存。这个类也有从股票中购买和出售股票的方法。本质上,这些方法只是分别从库存中移除和添加到库存中。库存中包含的物品都属于同一产品,因此无需订购收藏品,也无需跟踪物品放置或取走的位置。我对buy方法有问题,其标题定义如下: void buy(int n, Collection<T> items) 我需要这个方法做的是1向项目添加一个元素,2从库存中删除一个元素,3重复步骤1和2 n次。我不知道第1步是如何完成的。我认为

我正在编写一个类商店,其中包含一个类型为Collection的可变库存。这个类也有从股票中购买和出售股票的方法。本质上,这些方法只是分别从库存中移除和添加到库存中。库存中包含的物品都属于同一产品,因此无需订购收藏品,也无需跟踪物品放置或取走的位置。我对buy方法有问题,其标题定义如下:

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不是我们为您编写代码的地方。。。请尝试,提供代码,然后我们可以回答让您困惑的问题。