2 に答える
空のセット (不変) を返します。このセットはシリアライズ可能です。同名のフィールドとは異なり、このメソッドはパラメーター化されています。この例は、空のセットを取得するタイプ セーフな方法を示しています。
Set<String> s = Collections.emptySet();
実装上の注意: このメソッドの実装では、呼び出しごとに個別の Set オブジェクトを作成する必要はありません。この方法を使用すると、同じ名前のフィールドを使用する場合と同等のコストがかかる可能性があります。(このメソッドとは異なり、フィールドはタイプ セーフを提供しません。)
を使用null
して空のセットを表すのは悪い考えです。(明らかに) に対して操作を実行しようとすると、 がスローされるため、はのnull
ようには動作しません。つまり、 を使用して空のセットを表すと、コードに... のテストが散らばり、1 つでも見逃すとバグが発生することになります。Set
NullPointerException
null
null
実用的な解決策はCollections.emptySet()
、不変の空のセットが必要な場合は を使用するか、空で始まる可変セットが必要な場合は適切なSet
クラス (例: ) のインスタンスを作成することです。new HashSet<>()
質問を読み直すと、あなたが私の最初の理解とは異なることを意味している可能性があることに気付きました。
Java で数学的集合論の概念をゼロから実装/モデル化しようとしている場合はSet
、おそらく不変クラスとして実装するでしょう。(数学では、物事を変更することはありません!) 空のセットは、Set
要素を含まない単なるインスタンスです。特別な取り扱いは必要ありません。
NULL
概念は必須ではありません...「null」、「未定義のセット」、またはセットの数学的モデルに同様の概念を具体的に取り入れようとしている場合を除きます。(もしそうなら、あなたのモデルを理解せずにあなたにアドバイスできるかどうかはわかりません...数学的な観点から.)