2017-11-13 4 views
0

私はuniqueStringsがリストのjava:リストにオブジェクトを作成するには?

List<String> uniqueStrings = stringSet.getElements(); 
CompSet<String> stringSet2 = new CompSet<>(uniqueStrings); 
assert stringSet.equals(stringSet2); 

は "A"、 "B"、 "C" が含まれています。

クラスCompSetでは、関数に渡されるオブジェクトの内容がCompSetの内容と同じかどうかを確認するequals関数があります。私は、コードを実行するとき

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

CompSetのクラス定義を表示 –

+3

なぜあなたはリストにキャストしていますか? –

+1

これは意味がありません。 'this.equals(other)'は 'this.getElements()。equals(other)'と同じであってはいけません。 – shmosel

答えて

0

私は問題はここだと思う...あなたは、メソッドgetElementsを書く()とjava.util.Listのが戻ってきているの内側にあなたはクラス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; 
} 

しかし、この行にはいくつかの混乱もあります。

CompSet<String> stringSet2 = new CompSet<>(uniqueStrings); 

このためにコンストラクタを定義しましたか? uniqueStringは文字列のリストであるため、まだ実行できません& CompSetは同じクラスのオブジェクトです。

関連する問題