我有
List<String> uniqueStrings = stringSet.getElements();
CompSet<String> stringSet2 = new CompSet<>(uniqueStrings);
assert stringSet.equals(stringSet2);
其中uniqueStrings是List包含“a”,“b”,“c”。
在班级CompSet
中,我有一个等于函数,以查看传递给函数的对象内容是否与CompSet
的内容相同。
public List<T> getElements() {
List<T> ele = new ArrayList();
for (int i =0;i<NUBMER_OF_BUCKETS;i++){
ele.addAll(storage[i]);
}
return ele;
}
public boolean equals(Object other){
List<T> x = (List)other;
return x.equals(this.getElements());
}
然而,当我执行代码时,会发生以下错误:
java.lang.ClassCastException:hk.edu.polyu.comp.comp2021.assignment4.CompSet无法强制转换为java.util.List
有什么想法可以解决这个问题吗?
答案 0 :(得分:0)
我认为问题在这里......
public List<T> getElements() {
List<T> ele = new ArrayList();
for (int i =0;i<NUBMER_OF_BUCKETS;i++){
ele.addAll(storage[i]);
}
return ele;
}
您在编写方法getElements()并返回java.util.List中创建了类compSet。
但是在这一行中也有一些混乱。
CompSet<String> stringSet2 = new CompSet<>(uniqueStrings);
你为此定义了构造函数吗?但你仍然不能这样做因为uniqueString是string&amp;的列表。 CompSet是同一类的对象。