| 特徴/データ構造 | 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と同じだが下部にその記載あり