java中的集合

java中的集合,java,Java,所以我有这个代码。基本上,它应该能够购买任何类型的股票,并且您应该能够从该股票购买任何类型的集合,包括对象 对于主要功能,我有这个。基本上我有一个字符串的库存,我想从这个字符串库存中购买一组对象。然而,我得到了这个错误 java.util.Collection中的add(捕获#880 of?)不能应用于(T) import java.util.*; 公共类lab6{ 公共静态void main(字符串[]args){ 土耳其商店=新商店(); 土耳其。出售(“猪肉”); 火鸡。出售(“鸡肉”);

所以我有这个代码。基本上,它应该能够购买任何类型的股票,并且您应该能够从该股票购买任何类型的集合,包括对象

对于主要功能,我有这个。基本上我有一个字符串的库存,我想从这个字符串库存中购买一组对象。然而,我得到了这个错误

java.util.Collection中的add(捕获#880 of?)不能应用于(T)

import java.util.*;
公共类lab6{
公共静态void main(字符串[]args){
土耳其商店=新商店();
土耳其。出售(“猪肉”);
火鸡。出售(“鸡肉”);
土耳其;
Set属性=新的HashSet();
土耳其。购买(2,财产);
for(字符串e:财产)
系统输出打印ln(e);
}
}
这就是类文件

 import java.util.*;

    public class Shop<T> {

    List<T> stock;

    public Shop() { stock = new LinkedList<T>(); }
     public T buy() {
        return stock.remove(0);
    }

    void sell(T item) {
        stock.add(item);
    }

    void buy(int n, Collection<?> items) {

         for (T e : stock.subList(0, n)) {
            items.add(e);
        }
      for (int i=0; i<n; ++i) stock.remove(0);

    }
}
import java.util.*;
公营商店{
上市股票;
public Shop(){stock=new LinkedList();}
公众不买{
退库。删除(0);
}
无效销售(T项){
增加库存(项目);
}
无效购买(整数n,集合项目){
for(te:stock.subList(0,n)){
增加(e)项;
}

对于(int i=0;i用以下方法替换
buy
方法:

void buy(int n, Collection<T> items) {

    for (T e : stock.subList(0, n)) {
        items.add(e);
    }
    for (int i=0; i<n; ++i) stock.remove(0);

}
void buy(整数n,集合项目){
for(te:stock.subList(0,n)){
增加(e)项;
}

对于(int i=0;i这里的问题是
Collection
可以包含任何类型的对象,
T
可能不是
类型的子类型。例如,您可以传入
Collection
,如果
T
字符串,显然您不能执行
项。添加(e)

您需要确保
集合
包含
T
的超类型,以便添加
T
始终有效,因此请尝试以下操作:

void buy(int n, Collection<? super T> items)

void buy(int n,collectionary)你确定这是他想要的吗?他正在传递一个Set来购买,在本例中T是一个字符串。我是对的,这就是他想要的。他不能向集合添加一个T。这就是编译器抱怨的。找不到这一行的符号方法buy(int,java.util.Set)…turkey.buy(2,Occupations);哦,该死,应该想到这个!谢谢……那么有人知道如何遍历项目集合吗?(对于?e:项目)没有work@Jake:由于
?super T
可以是任何超类型,因此您不能假定任何特定类型,因此您最好为(对象e:项)
public static void main(final String[] args) {
    final Shop<String> turkey = new Shop<String>();
    turkey.sell("pork");
    turkey.sell("chicken");
    turkey.print();
    final Set<String> possessions = new HashSet<String>();
    turkey.buy(2, possessions);
    for (final String e : possessions) {
        System.out.println(e);
    }
}
void buy(int n, Collection<? super T> items)