違いを詳しく説明する前に、HashSet と TreeSet が何であるかを簡単に確認してみましょう。
HashSet は、ストレージにハッシュ テーブルを使用するコレクションです。 Set インターフェイスを実装します。つまり、要素の重複は許可されません。要素は順序付けされておらず、並べ替えられていないため、HashSet は高速な検索、挿入、削除が必要なシナリオに適しています。
TreeSet は、NavigableSet インターフェイスを実装するコレクションです。格納には Red-Black ツリーが使用されます。これは、要素が並べ替えられ、順序付けられた方法で格納されることを意味します。 TreeSet も要素の重複を許可しませんが、要素の自然な順序を維持する必要がある状況には理想的です。
HashSet : 内部的にハッシュ テーブルを使用します。各要素のハッシュ コードは、その格納場所を決定するために使用されます。 2 つの要素が同じハッシュ コードを持つ場合、チェーンまたはプローブと呼ばれる手法が衝突を処理するために使用されます。
コード例:
SethashSet = new HashSet(); hashSet.add("Apple"); hashSet.add("Banana"); hashSet.add("Mango");
TreeSet : 内部的に赤黒ツリーを使用します。各要素はその自然な順序または提供されたコンパレーターに従って配置され、ツリーのバランスが保たれることが保証されます。
コード例:
SettreeSet = new TreeSet(); treeSet.add("Apple"); treeSet.add("Banana"); treeSet.add("Mango");
HashSet と TreeSet の両方で要素の重複は許可されません。ただし、重複を検出する方法は異なります。 HashSet は hashCode () メソッドと equals () メソッドを使用しますが、TreeSet は compareTo () または Comparator。
HashSet 対 LinkedHashSet : HashSet は順序を保証しませんが、LinkedHashSet は挿入順序を維持します。一方、 TreeSet は、要素を自然に、またはカスタム コンパレータによって並べ替えます。
以下のコード スニペットを実行すると、反復順序の違いがわかります:
// HashSet Example SethashSet = new HashSet(); hashSet.add("Zebra"); hashSet.add("Apple"); hashSet.add("Mango"); System.out.println("HashSet: " hashSet); // Output may be unordered, e.g., [Apple, Mango, Zebra] // TreeSet Example Set treeSet = new TreeSet(); treeSet.add("Zebra"); treeSet.add("Apple"); treeSet.add("Mango"); System.out.println("TreeSet: " treeSet); // Output will be sorted, e.g., [Apple, Mango, Zebra]
HashSet と TreeSet のどちらを選択するかは、結局のところ、特定のニーズに応じて決まります:
何か質問はありますか?以下にお気軽にコメントを書き込んでください。
投稿の詳細はで読む: Java における HashSet と TreeSet の主な違いトップ 10
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3