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

イテレータを定義する必要があると思います

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

その後、HashSetに自動的にキャストできるはずです。それ以外の場合は、明示的なキャストを行う必要があります

if(((HashSet<Integer>)i.next()).containsAll(union)){
                //return true;
            }
于 2012-08-14T04:50:47.260 に答える
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 に答える