List, Set, Map の違い

特徴/データ構造 ArrayList LinkedList HashSet TreeSet LinkedHashSet HashMap TreeMap LinkedHashMap
重複の許可 許される 許される 許されない 許されない 許されない キーは許されない、値は許される キーは許されない、値は許される キーは許されない、値は許される
順序の保証 挿入順序を保持 挿入順序を保持 順序なし 自然順序(ソート済み) 挿入順序を保持 順序なし キーの自然順序(ソート済み) 挿入順序を保持
インデックスアクセス 可能(高速) 可能(遅い) 不可 不可 不可 不可 不可 不可
検索速度 O(1)(平均) O(n) O(1)(平均) O(log n) O(1)(平均) O(1)(平均) O(log n) O(1)(平均)
挿入速度 O(1)(平均、末尾) O(1)(先頭/末尾)、中央はO(n) O(1)(平均) O(log n) O(1)(平均) O(1)(平均) O(log n) O(1)(平均)
削除速度 O(n)(中央/末尾の場合) O(1)(先頭/末尾)、中央はO(n) O(1)(平均) O(log n) O(1)(平均) O(1)(平均) O(log n) O(1)(平均)
メモリ効率 配列ベースで効率が良い メモリ効率はやや低い 効率的(ハッシュベース) ソートにコストがかかる 効率的(ハッシュベース) 効率的(ハッシュベース) ソートにコストがかかる 効率的(ハッシュベース)
用途 順序付きリストが必要な場合 順序付き、挿入/削除が多い場合 ユニークな要素の集合管理 自然順序でソートされた集合 ユニークな要素を挿入順で管理 キーと値のペアの効率的管理 ソートされたキーと値のペア管理 順序を保持するキーと値の管理
長所 ランダムアクセスが高速 挿入/削除が効率的 検索/挿入/削除が高速 ソートされた状態で管理できる 順序を保持しつつ高速 検索/挿入/削除が高速 ソートされた状態で管理できる 順序を保持しつつ高速
短所 挿入/削除が非効率的(中央) ランダムアクセスが遅い 順序が保証されない ソートのオーバーヘッドがある メモリ効率が低い場合がある 順序が保証されない 挿入/検索がやや遅い メモリ消費がやや大きい

hashmapを使った会員システムのヒント

前半は上記PDFと同じだが下部にその記載あり