Java can';无法访问ArrayList的ArrayList(通用)

Java can';无法访问ArrayList的ArrayList(通用),java,generics,Java,Generics,我编写了一个表示集合的类。在集合中,我有一个ArrayList字段“elements”。类中的所有方法都是泛型 我写的第一个方法是一个方法,它获取另一个集合作为参数,并返回新的集合,该集合包含此参数之间的并集。方法如下: public Set<E> union(Set<E> s){ Set<E> toReturn = new Set<>(); for(E toAdd : this.elements) {

我编写了一个表示集合的类。在集合中,我有一个ArrayList字段“elements”。类中的所有方法都是泛型

我写的第一个方法是一个方法,它获取另一个集合作为参数,并返回新的集合,该集合包含此参数之间的并集。方法如下:

   public Set<E> union(Set<E> s){
      Set<E> toReturn = new Set<>();

      for(E toAdd : this.elements) {
        toReturn.addToSet(toAdd);
      }
      for(E toAdd : s.elements)
        toReturn.addToSet(toAdd);

      return toReturn;
   }
公共集合并集(集合s){
Set toReturn=新集合();
对于(E toAdd:this.elements){
toReturn.addToSet(toAdd);
}
对于(E至添加:s.元素)
toReturn.addToSet(toAdd);
回归回归;
}
现在,我想编写另一个方法,该方法以参数ArrayList>的形式获取,并返回新的集合,该集合表示参数ArrayList中的所有集合。但我无法访问ArrayList中的集合。这是我的密码:

   public Set<E> union(ArrayList<Set<E>> s) {
      Set<E> toReturn = new Set<>();

      for(E el : s) {
               toReturn.addToSet(s.union(el));
      }

      return toReturn;
   }
公共集合并集(ArrayList s){
Set toReturn=新集合();
对于(E el:s){
toReturn.addToSet(s.union(el));
}
回归回归;
}
编译器告诉我“ArrayList>类型的方法联合(E)未定义


我很高兴能得到一些帮助。谢谢你在for循环中使用了错误的变量,s是ArrayList,toReturn是你想用addAll(otherSet);方法计算其并集的集合。你可能正在使用Guava的集合库。如果是这样,你可以继续使用并集(otherSet)方法

如果您有:

for(E el : s) {
               toReturn.addToSet(s.union(el));
      }
更确切地说:

for(Set<E> el : s) {
               toReturn.addToSet(toReturn.union(el));
      }
for(设置el:s){
toReturn.addToSet(toReturn.union(el));
}

为什么要传入集合的ArrayList?为什么不直接传入一个列表?请将类的代码与属性共享以避免误解。请确保不要将
java.util.ArrayList
java.util.Set
与您的代码混淆?您是否命名了类
Set
?您不应该使用内置代码ame@azro由于OP设计的类正好代表一个集合,
Set
应该是它的名称。是的,我称我的类为“Set”,因为我必须实现集合类。我将行更改为“toReturn.addToSet(toReturn.addAll(el));“但它仍然告诉我”类型集的addAll(int)方法未定义。我想我必须在“toReturn”中加入演员阵容。但是我不知道如何…然后尝试:for(Set el:s){…因此编译器知道el是一个集合。