重複の可能性:
ハッシュセットとツリーセット
HashSetと をTreeSet交互に使用できますか? プログラムで交換TreeSetした場合Hashset、またはその逆の場合、どのような問題が発生しますか? Comparableのために実装する必要があることを認識していますTreeSet。
重複の可能性:
ハッシュセットとツリーセット
HashSetと をTreeSet交互に使用できますか? プログラムで交換TreeSetした場合Hashset、またはその逆の場合、どのような問題が発生しますか? Comparableのために実装する必要があることを認識していますTreeSet。
一部の API が を必要とする場合Set、どの実装を渡すかはまったく問題ではありません。具象型が必要な場合 (可能性は低い)、それらを混在させることはできません。
一般に、これらの違いはパフォーマンス (HashSetより高速) にありますが、これはプログラムの動作や順序に影響を与えるべきではありません。の項目の順序HashSetは予測できません。プログラムがそのような順序に依存している場合は、LinkedHashSetorを使用する必要がありTreeSetます。
HashSetでありTreeSet、両方ともSets です。それらはほとんど交換可能ですが、TreeSetも であるSortedSetため、その要素は を実装する必要があることに注意してくださいComparable。
セットを注文したい場合は、 を使用する必要がありますTreeSet。代わりにa を使用するHashSetと、順序付けに依存する操作で予期しない結果が得られます。
一方、 aは、順序が気にならない場合HashSetよりもはるかに高速です。TreeSet