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