0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🧠Java初学者向け:List・ArrayList・LinkedListの違いとポケモンで学ぶ使い分け

Posted at

🧠Java初学者向け:List・ArrayList・LinkedListの違いとポケモンで学ぶ使い分け

📌 目次

  • はじめに

  • List・ArrayList・LinkedListの違い

  • 業務での使い分けアドバイス

  • ポケモンを例にした使用シーンとコード解説

    • ArrayListを使うべき例
    • LinkedListを使うべき例
    • Listで柔軟に書く方法
  • まとめ


🎓はじめに

JavaのList系コレクションは頻繁に登場しますが、「ArrayListとLinkedList、どっちを使えばいいの?」という疑問を抱く方も多いのではないでしょうか。

この記事では、初学者でもイメージしやすいポケモンを題材に、実際の使い分けをコード付きで解説していきます!


🗂️List・ArrayList・LinkedListの違い

特徴 ArrayList LinkedList
データ構造 配列ベース 連結リスト
挿入/削除 遅い(中間操作はO(n)) 速い(O(1))※位置による
検索(get) 速い(O(1)) 遅い(O(n))
メモリ効率 良い 悪い(オーバーヘッドあり)
よく使う場面 要素数が多くない・検索中心 頻繁に挿入/削除する

💼業務での使い分けアドバイス

  • ArrayListが基本:速度・使いやすさ・他の開発者との共通理解。
  • LinkedListは限定使用:特定条件(大量の中間挿入/削除)でのみ使う。
  • List型で変数定義:将来の実装変更に備えて柔軟に。
// OKな例(柔軟性あり)
List<String> names = new ArrayList<>();

🧪ポケモンを例にした使用シーンとコード解説

✅ArrayListを使うべきケース:ポケモン図鑑

import java.util.ArrayList;
import java.util.List;

public class PokemonDex {
    public static void main(String[] args) {
        // ポケモンの図鑑をArrayListで管理(検索が中心)
        List<String> pokedex = new ArrayList<>();
        pokedex.add("ピカチュウ");  // インデックス0に追加
        pokedex.add("ヒトカゲ");    // インデックス1に追加
        pokedex.add("ゼニガメ");    // インデックス2に追加

        // 図鑑番号から検索(検索が高速)
        System.out.println("2番目のポケモン: " + pokedex.get(1));
    }
}

📌ArrayList向きの理由

  • 図鑑は順番固定で頻繁な挿入削除がない。
  • インデックスアクセスが高速(getがO(1))。

✅LinkedListを使うべきケース:バトルの行動順

import java.util.LinkedList;
import java.util.Queue;

public class BattleQueue {
    public static void main(String[] args) {
        // バトル中の行動順(キュー)をLinkedListで管理
        Queue<String> actionQueue = new LinkedList<>();

        actionQueue.offer("ピカチュウのこうげき");
        actionQueue.offer("ヒトカゲのこうげき");
        actionQueue.offer("ゼニガメのこうげき");

        // 行動を順に処理(先頭から取り出す)
        while (!actionQueue.isEmpty()) {
            System.out.println(actionQueue.poll()); // O(1)で取り出し
        }
    }
}

📌LinkedList向きの理由

  • キュー構造(FIFO)に適している。
  • 頻繁に先頭から追加/削除するならLinkedListが高速。

⚖️Listを使って柔軟に書く

import java.util.List;
import java.util.ArrayList;

public class PokemonTrainer {
    public static void main(String[] args) {
        // List型で宣言 → 実装を変更しやすい
        List<String> team = new ArrayList<>();
        team.add("ピカチュウ");
        team.add("フシギダネ");

        // 柔軟に拡張・削除なども可能
        team.remove("フシギダネ");
        team.add("カビゴン");

        System.out.println("現在の手持ちポケモン: " + team);
    }
}

💡ポイント

  • List型にしておけば、内部実装(ArrayList or LinkedList)を後で変更できる。

🔚まとめ

使用ケース 推奨クラス 理由
検索が中心(図鑑、一覧表示など) ArrayList getが高速
頻繁な挿入/削除(バトル、順番制御など) LinkedList add/removeが高速
実装を切り替える可能性がある Listで定義 柔軟性

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?