Java

コレクション#1

コレクションとは??

大きさが決まってないが配列のように多数の値をまとめて操作できるものです。

  • set <順序があるとは限らない(中身の重複不可)>

・HashSet
・LinkedHashSet
・TreeSet

  • List <順番通りに並べて格納する(中身の重複可)>

・ArrayList
・LinkedList

  • Map <ペアで対応づけて格納する>

・HashMap
・LinkedHashMap
・TreeMap

コレクションのイメージ

  • HashSet

中身の重複不可

  • ArrayList

随時要素を削除したり、追加したりできる配列のようなもの。要素がメモリ上に連続的に取られている。

  • LinkedList

AllayListのように、要素を削除したり、追加したりできるもの。メモリ上に飛び飛びに取られている。

  • HashMap

ペアで値を格納する。

コレクションの具体的説明

クラス 特徴
HashSet Setの中で一番高速に処理します。要素の追加順序を保障しません。null要素を許容します。スレッドに対し同期化されません。
LinkedHashSet 要素の追加順序を保障します。null要素を許容します。スレッドに対し同期化されません。
TreeSet 追加された要素をソートします。ソート順序は「自然順序付け」と呼ばれる「java.lang.Comparable」インタフェースの「compare」メソッドによって定義される順序に従っています。従って、このインタフェースを実装した独自のクラスを用意し「compare」メソッドを定義することでソート順序を変更することができます。null要素を許容しません。スレッドに対し同期化されません。
ArrayList 「List」の中で最も基本的な実装です。nullを含む全ての要素を保障します。要素はリスト指定した位置または最後の位置に挿入することができ、挿入した位置を指定して要素を取り出すことができます。要素を配列で保持しているため要素の取得は高速に処理できますが、要素数が多くなると追加や削除処理に時間が掛かります。スレッドに対し同期化されません。
LinkedList 「ArrayList」と基本操作は同じですが、「ArrayList」は要素を配列として保持しているのに対して「LinkedList」は要素をリスト構造を用いて管理しています。これにより要素の追加や削除作業が全体の要素に影響することなく行えるため高速に処理できます。しかし要素の検索はリスト構造の先端または終端から順に探していくことになるのでランダムアクセスには不向きです。このためスタックやキューのような処理に使用されます。スレッドに対し同期化されません。
HashMap 「Map」の中で最も基本的な実装です。キー及び値にnullを使用することが出来ます。スレッドに対し同期化されません。
LinkedHashMap マップに挿入したキーの順序を保障します。スレッドに対し同期化されません。
TreeMap マップ内でキーを昇順にソートします。スレッドに対し同期化されません。

コレクションは、基本データ型の情報を格納することができない。

箱の中には、青の塊を入れて表現してるよ

❌ ArrayList <int>

⭕️ ArrayList <Integer>

1 2 3 4