我写了代表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)。
我会很乐意为您提供帮助。谢谢
答案 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));
}