セットを空 (null ではない) に初期化したいのですが、誰か助けてもらえますか? これが私のコードです
public class Graph {
private Set<Vertex> vertices;
public Graph() {
vertices = {};
}
これが間違った方法であることはわかっていますが、他に何もできませんでした
セットはインターフェースです。必要な実装を決定してから、引数なしのコンストラクターを使用して構築する必要があります。例えば
vertices = new HashSet<Vertex>();
また
vertices = new TreeSet<Vertext>();
vsの詳細については、この SO の質問/回答を参照してください。これがインターフェイスであることを考えると、任意の数の実装が存在する可能性があります (独自のものを作成することもできます) が、最初はこれら 2 つのうちの 1 つが必要になると思います。TreeSet
HashSet
Set
交換
vertices = {};
と
vertices = new HashSet<Vertex>();
HashSet
これにより、Set
インターフェイスの空が初期化されます
コンストラクターを実行する必要があります。
public Graph() {
vertices = new HashSet<>();
}
Set
はインターフェイス定義であるため、具体的な実装を選択する必要がありますSet
。 HashSet
はそのような実装の 1 つですが、TreeSet
別の実装です (TreeSet
実際には a の実装ですSortedSet
)。
public Graph(){
vertices = new HashSet<Vertex>();
}
また
public Graph(){
vertices = new TreeSet<Vertex>();
}