- ベストアンサー
「コレクション」の違い
こんにちわ、コレクションの中で色々違いがわからないものがあるので質問させてください。 本題に入る前に確認ですが、List、Set、Mapは、 左から重複OK、重複NG、重複NG&キーで管理という考えでいいでしょうか? もし考え方が違っていたらご指摘ください。 本題に入らせていただきたいのですが、色々とある中の違いを教えてください。 ・ArrayListとLinkedList ・HashSet(Map)とTreeSet(Map) この違いがわかりません。 どうぞよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
調べればいろいろとでてくると思いますが、 List、Set、Mapはそのような考えでいいと思います。 ArrayListとLinkedListは、格納の仕方が違います。 javadocを読めば詳しいアルゴリズムが書いてあります。 ArryListは配列で順序を保障し、LinkedListはデータの連結です。列車を想像すれば分かりやすいでしょうか。 Hashのほうは順序を保障していません。文字通りハッシュで管理しています。 TreeのほうはTreeアルゴリズムによって順序を保障しています。
その他の回答 (1)
- UKY
- ベストアンサー率50% (604/1207)
> List、Set、Mapは、左から重複OK、重複NG、重複NG&キーで管理という考えでいいでしょうか? 使い方としてはそれでもいいですが考え方としてはあまりよくありません。 Set というのは単純なオブジェクトの集まりです。 それに対し List, Map は二つのものの結びつきの集まりです。 つまり、List は数字とオブジェクトの結びつき、Map はオブジェクトとオブジェクトの結びつきです。 List のインデクスや Map のキーは重複できませんが、結び付けられるオブジェクトの方は重複できます。 よって、数字をオブジェクトの一種とするならば、概念の上では List は Map の一種とみなせます。 実用上は、List は Set に近いですが、概念としては List はむしろ Map に近いのです。 (実用上 Set に近いというのは、List のインデクスは 0 から始めて順番に使うという制約があることによって、List は順序付きの重複可能な Set とみなせるようになるからです)