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