private ArrayList<HashSet<Integer>> sets = new ArrayList<HashSet<Integer>>();
Iterator i = this.sets.iterator();
while (i.hasNext()){
if(i.next().containsAll(union)){
return true;
}
}
我得到以下异常,因为它解析.next()获取Object
类型的对象Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Type mismatch: cannot convert from Object to HashSet<Integer>
The method containsAll(HashSet<Integer>) is undefined for the type Object
我得到对象Hash set
while (i.hasNext()){
System.out.println(i.next().getClass().getName());
}
打印
java.util.HashSet
java.util.HashSet
java.util.HashSet
发生了什么事?
答案 0 :(得分:3)
确保您的Iterator也是HashSet
Iterator<HashSet<Integer>> i = this.sets.iterator();
答案 1 :(得分:1)
相当容易,替换
Iterator i = this.sets.iterator();
与
Iterator<HashSet<Integer>> i = this.sets.iterator();
答案 2 :(得分:0)
您需要明确地强制转换它或使其成为通用
private ArrayList<HashSet<Integer>> sets = new ArrayList<HashSet<Integer>>();
Iterator<HashSet<Integer>> i = this.sets.iterator();
while (i.hasNext()){
if(i.next().containsAll(union)){
return true;
}
}
答案 3 :(得分:0)
我认为您还需要在
中定义迭代器 Iterator<HashSet<Integer>> i = sets.iterator();
然后它应该能够自动将其强制转换为HashSet。否则你需要进行显式投射
if(((HashSet<Integer>)i.next()).containsAll(union)){
//return true;
}