3
1

More than 3 years have passed since last update.

【Java】コレクションクラスのSet構造(HashSetとTreeSetについて)

Posted at

プログラミング勉強日記

2020年10月15日
JavaでTreeSetを使ったが、HashSetとの違いがよくわからなかったので、記録する。

コレクションクラスとは

 コレクションは要素を集めたオブジェクトのこと。コレクションクラスは大きく分けてList,Map,Setの3つの種類がある。それぞれ性質の異なるクラスに分かれている。

 List構造はArrayListとLinkedListの2種類ある。List構造は要素を順番付けして管理する構造で、要素はインデックス番号順に並んでいるので、番号を指定して要素の取得や挿入、更新、変更などができる。

 Map構造はHashMapとTreeMapの2種類ある。Map構造はキーと値をセットにしたものを1つの要素として管理するデータ構造で、要素がキーとして管理されているのでキーを指定して値の更新や削除をお来ぬことができる。
 今回扱うHashSetとTreeSetは名前からもある通りSet構造であり、下記にまとめる。

Set構造のコレクションクラスとは

 Set構造はHashSetとTreeSetの2種類あり、要素を順番付けしないで管理するデータ構造である。Listのような順番付けやMapのようなキー管理もないので要素の取得にはIteratorや拡張for文で取得する。要素の重複はできない(同じキーがセットされた場合は上書きする。)
 HashMapとTreeSetの違いを簡単にまとめると以下のようになる。

  • HashMapは取得順は関係ない
  • TreeSetはソートされた順で要素の取得ができる
  • HashMapはnullを扱えない
  • TreeSetはnullを扱える

 HashMapは要素の取得順は保証されないが、TreeSetは自動ソートされて管理されるのでソートされた順番で要素が取得できる。また、HashMapは要素にnullを使用することができるが、TreeSetはnullを使用することができる。

まとめ

 Set構造だけでなくコレクションクラスの特徴を表で簡単にまとめる。

ArrayList LinkedList HashMap TreeMap HashSet TreeSet
インタフェース List List Map Map Set set
要素の重複 × × × ×
nullの要素 × × ×
自動ソート × × ×

 上では述べていないが、ArrayListはよその取得が早いが、挿入や削除が遅く、LinkedListは要素の挿入や削除は早いが取得は遅いという特徴がある。

参考文献

TreeSetクラス
コレクションクラスの比較
 

3
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1