0
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

当我得到对象哈希集时

        while (i.hasNext()){
            System.out.println(i.next().getClass().getName());
        }

印刷

java.util.HashSet
java.util.HashSet
java.util.HashSet

这是怎么回事 ?

4

4 回答 4

3

确保您的迭代器也作为类型HashSet

Iterator<HashSet<Integer>> i = this.sets.iterator();
于 2012-08-14T04:44:20.973 回答
1

很简单,更换

Iterator i = this.sets.iterator();

Iterator<HashSet<Integer>> i = this.sets.iterator();
于 2012-08-14T04:44:25.560 回答
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;
                }
            }
于 2012-08-14T04:45:02.980 回答
0

我认为您还需要在

 Iterator<HashSet<Integer>> i = sets.iterator();

然后它应该能够自动将其转换为 HashSet。否则,您将需要进行显式转换

if(((HashSet<Integer>)i.next()).containsAll(union)){
                //return true;
            }
于 2012-08-14T04:50:47.260 回答