目次
概要
重複しないリストは、「Setに格納することで重複を除外してくれる」というのは多くの記事で紹介されています。
ここでは、Setに格納した後のデータの並び順も考慮したいという要件に対応するために、3種類のSetを紹介します。
Setの種類
HashSet(順序なし)
通常のSetです。
データの並び順は保証されていないので、
ただ単純に重複を除外したい場合に使用します。
LinkedHashSet(順序を維持)
挿入順を保証するSetです。
データの並び順を維持したい場合に使用します。
参考:【Java】LinkedHashSetの使い方(挿入順を保持するSet)
TreeSet(順序あり)
順序付けされるSetです。
データを順序付け(※1※2)した結果で保持したい場合に使用します。
- ※1. 自然順序
- ※2. 独自の順序付け
順序付けを指定しない場合、デフォルトで自然順序(数値なら小さい値から、アルファベットならAからで)並べられます。
Comparatorを使用することで、独自の並び順を指定することも可能です
性能について
Listをforでループして重複を除外する方法と、Setに格納した場合でどちらの方が処理性能が高いかを検証した記事がありましたので、参考までに紹介します。
性能比較はHashSetのみですが、HashSetの方が概ね1.2~1.3倍速いという結果だったようです。
参考:遅くならないの?
まとめ
- Setは重複を除外したリストである。
- Setには、順序なし、順序を維持、順序ありのSetが用意されている。
- Setを使うことで処理性能が落ちるわけではないので、積極的に使ってよい。
コメント