投稿 2022年5月5日
更新 2022年5月5日
専門用語の数:多
Javaのコレクションは、ありがたいことにたくさんあります。
便利な反面結局どれ使えば一番いいのか、わかりにくかったりします。
そして何より、ちょっと使ってないと、ふと忘れます。
なので簡単にまとめてみました。
改めてJavaのコレクションの種類とその特徴を超簡単にまとめます。
インデックス(管理番号)で管理して保持します。
順序に焦点を当てたコレクションです。
キーと値を紐づけて保持します。
データの紐づけに焦点を当てたコレクションです。
重複しない値を保持します。
重複データを作成しないところに焦点を当てたコレクションです。
FIFO・LIFOです。
要素の最初・最後に焦点を当てたコレクションです。
実装クラスを知っていると、実は順序はどのコレクションでも保持はできます。
つまり順序を保持するかしないかは、あまり意識はしなくても大丈夫です。
なので私は以下の順番で決めていってます。
2つ以上の値を紐づけないといけないのなら、Map一択です。
やろうと思えば他のコレクションでもできますが、可読性が落ちます。
同じ値を1つしか保持しない場合Set一択です。
2つ以上保持する場合はList・Queue・Dequeですね。
途中の要素を一切触らないのであれば、Queue・Deque一択です。
用途が定まらないとか、全体的に操作する可能性があるのあれば、List・Setですね。
最後いきなり難しくなりましたけど、どういうデータ操作傾向かを見ます。
データ挿入・参照・変更・削除の量や位置、
その変数の利用用途によって変わってくるので、
残りの選択肢の中からベストな型を選んでます。
超雑な早見表はこんな感じです。
参照が多い | ArrayList |
---|---|
変更が多い | LinkedList |
順序保持が不要 | HashMap HashSet |
挿入順保持が必要 | LinkedHashMap LinkedHashSet |
ソートが必要 | TreeMap TreeSet PriorityQueue |
ソートが不要 | ArrayDeque |
最後に改めて各実装クラスの特徴をまとめておきます。
各インターフェースの特徴は省略しています。
List | 特徴 |
---|---|
ArrayList | 要素参照速度が速く、変更速度が遅い |
LinkedList | 要素参照速度が遅く、変更速度が速い |
Map | 特徴 |
HashMap | 順序を保持しない |
LinkedHashMap | 挿入順、またはアクセス順を保持 |
TreeMap | 自動順序、または独自実装順序でソート |
Set | 特徴 |
HashSet | 順序を保持しない |
LinkedHashSet | 挿入順を保持 |
TreeSet | 自動順序、または独自実装順序でソート |
Queue・Deque | 特徴 |
ArrayDeque | 両端キュー(FIFO・LIFO) |
PriorityQueue | 自動順序、または独自実装順序でソートしたFIFO |
Javaのコレクションの一覧の紹介と、自分なりの選び方でした。
正直自分でも使いこなせてないです。
だからこそ、自分なりに改めてまとめてみました。
コレクションを使いこなせれば、本当に世界変わりました(実体験)
自分の中で明確に、「プログラムがわかってきた」と感じれたので、
是非マスターできるようにしてみてはどうでしょうか?
以上、ここまで見ていただきありがとうございます。
皆さまの快適な開発ライフに、ほんの少しでもお役に立てれば幸いです。
コメント一覧