无法访问ArrayList的ArrayList(通用)

时间:2019-05-12 18:41:46

标签: java generics

我写了代表Set的类。在集合中,我有一个“元素”为ArrayList。该类中的所有方法都是泛型。

我写的第一个方法是一个方法,该方法获取另一个Set作为参数,并返回新的Set,该Set保留了this.Set与参数之间的联合。这是方法:

   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;
   }

现在我想编写另一个方法,作为参数ArrayList>并返回表示此this.Set到参数ArrayList内部的所有Set之间的并集的新Set。但是我无法访问ArrayList中的Set。这是我的代码:

   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>类型,未定义方法union(E)。

我会很乐意为您提供帮助。谢谢

1 个答案:

答案 0 :(得分:1)

在for循环中使用错误的变量,s是ArrayList,toReturn是您要使用 addAll(otherSet); 方法计算并集的集合。如果是这样,您可能正在使用Guava的Set库,则可以继续使用union(otherSet)方法。

您在哪里:

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

最好放:

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