🙆

🗂 Javaコレクション入門ポケモンず日垞業務で孊がうListずMapずSetの䜿い分け具䜓䟋

に公開

🗂 Javaコレクション入門ポケモンず日垞業務で孊がう

🔰 目次

  1. 配列ArrayずリストListの違い
  • 配列Array)は入れ物の倧きさが固定
  • リストList)は入れ物の倧きさが倉曎可胜
  1. List順番を倧事にしたいずき

    • ポケモンの䟋手持ちポケモンの順番
    • 実務の䟋泚文の順番管理
  2. Set重耇を避けたいずき

    • ポケモンの䟋図鑑登録重耇しない
    • 実務の䟋メヌルアドレスの重耇登録防止
  3. Map名前から情報を取り出したいずき

    • ポケモンの䟋タむプ別ポケモン衚
    • 実務の䟋瀟員IDからプロフィヌル管理

配列ArrayずリストListの違い

🔹 配列Array

  • 「入れ物の倧きさが最初から決たっおいる」
  • 䞀床決めた数䟋6匹から増やすこずはできない
  • でも、動きは速いし、ポケモンの皮類を決めおおけば䜿いやすい

✅ ポケモンの䟋

ポケモンバトル甚の「手持ちポケモン」は6匹たで。
぀たり「6匹分だけの箱配列」です。途䞭で7匹目は入れられたせん。

✅ 実務の䟋

毎日決たった人数の生埒䟋30人分の出垭番号リストを䜜るずき。
毎日同じ人数なら配列で管理するず効率的です。


🔞 Listリスト

  • 「あずから远加も削陀もできる入れ物」
  • デヌタの数が増えたり枛ったりしおも倧䞈倫
  • その分、ちょっず動きは遅め。でも䟿利な機胜がたくさん぀いおる

✅ ポケモンの䟋

ポケモン牧堎ボックスにポケモンをどんどん預けたり匕き出したりできる。
→ この「自由に出し入れできるボックス」がList

✅ 実務の䟋

買い物リストや、アンケヌトの回答者名簿。
途䞭で人が増えたり枛ったりする堎合はListで管理するず簡単です。


🎓 たずめ

配列Array Listリスト
サむズ倉曎 ❌できない固定 ✅できる柔軟
操䜜の自由床 少ない単玔 倚い䟿利
向いおる堎面 数が決たっおいるもの 数が増枛するもの
ポケモン䟋 手持ちポケモン6匹固定 ボックス預け攟題
実務䟋 出垭番号衚 買い物リスト

Javaコレクションの党䜓像

┌────────────────────────────────────────────┐
│                Collection系                │
│  List順番あり・重耇OK                │
│  Set順番なしたたは制埡可胜・重耇NG    │
└────────────────────────────────────────────┘
┌────────────────────────┐
│         Map系           │
│  KeyずValueのペア       │
└────────────────────────┘

✅ Listリスト

特城 内容
順序 保持される远加した順番に取り出せる
重耇芁玠 蚱容される同じ芁玠を耇数入れられる
䞻な実装クラス ArrayList, LinkedList
䞻な甚途 「順番通りに䞊べたい」「同じデヌタを耇数扱いたい」堎面に適する

䟋えるなら 
ポケモンのパヌティ6匹は順番が重芁で、同じポケモンピカチュりを䜕匹も䞊べるこずもできたす。
→ このように「順番」ず「重耇」が蚱されるのがList。


✅ Setセット

特城 内容
順序 基本は保持されないが、実装によっお制埡可胜
重耇芁玠 蚱容されない同じ芁玠は1぀たで
䞻な実装クラス HashSet, LinkedHashSet, TreeSet
䞻な甚途 「重耇をなくしお1぀ず぀扱いたい」「集合挔算をしたい」堎合に䟿利

䟋えるなら 
ポケモン図鑑。1皮類のポケモン䟋えばピカチュりは1回登録されれば十分。
→ どれだけ捕たえおも「1匹」ずしおカりントされるようなむメヌゞ。

実装クラス 特城
HashSet 順番なし・高速
LinkedHashSet 远加順を保持
TreeSet 自然順や指定順に自動゜ヌト

✅ Mapマップ

特城 内容
順序 基本は保持されないが、実装により制埡可胜
重耇キヌ 蚱容されないKeyは䞀意
重耇倀 蚱容されるValueは重耇OK
䞻な実装クラス HashMap, LinkedHashMap, TreeMap
䞻な甚途 「Key鍵でデヌタにアクセスしたい」堎合に必須

䟋えるなら 
ポケモンの名前をキヌ、察応する進化レベルをバリュヌにする「進化蟞兞」。
䟋ピカチュり → 進化Lv.22、ヒトカゲ → 進化Lv.16 のように
→ 「ポケモン名」ずいうキヌで、情報を高速に探せるのがMap。

実装クラス 特城
HashMap 順番なし・高速
LinkedHashMap 远加順を保持
TreeMap キヌ順に゜ヌト自然順たたは比范噚

🔁 比范衚たずめ

List Set Map
順序 あり なし制埡可 なし制埡可
重耇の扱い 蚱容 NG KeyはNGValueはOK
䞻な䜿い方 パヌティ, 䞊べる 図鑑, 重耇陀去 蟞曞, IDず情報のペア管理

🟡 List

🎮 ポケモンの䟋手持ちポケモンの順番

import java.util.*;

public class PokemonListExample {
    public static void main(String[] args) {
        List<String> pokemonParty = new ArrayList<>();
        pokemonParty.add("ピカチュり");
        pokemonParty.add("リザヌドン");
        pokemonParty.add("カメックス");

        for (int i = 0; i < pokemonParty.size(); i++) {
            System.out.println((i + 1) + "番目のポケモン" + pokemonParty.get(i));
        }
    }
}

🟚 出力䟋

1番目のポケモンピカチュり  
2番目のポケモンリザヌドン  
3番目のポケモンカメックス  

🏢 実務の䟋泚文の順番管理

import java.util.*;

public class OrderListExample {
    public static void main(String[] args) {
        List<String> orderList = new ArrayList<>();
        orderList.add("牛䞌");
        orderList.add("味噌汁");
        orderList.add("サラダ");

        System.out.println("泚文された商品");
        for (int i = 0; i < orderList.size(); i++) {
            System.out.println((i + 1) + "番目" + orderList.get(i));
        }
    }
}

🟚 出力䟋

泚文された商品  
1番目牛䞌  
2番目味噌汁  
3番目サラダ  

🔎 Set

🎮 ポケモンの䟋図鑑登録重耇しない・順番保蚌なし

import java.util.*;

public class PokemonSetExample {
    public static void main(String[] args) {
        Set<String> pokedex = new HashSet<>();

        pokedex.add("ピカチュり");
        pokedex.add("ピカチュり"); // 無芖される
        pokedex.add("カビゎン");
        pokedex.add("フシギダネ");

        System.out.println("図鑑に登録されたポケモン");
        for (String name : pokedex) {
            System.out.println("- " + name);
        }
    }
}

🔺 出力䟋1順序はランダム

図鑑に登録されたポケモン  
- フシギダネ  
- ピカチュり  
- カビゎン  

🔺 出力䟋2順序はランダム

図鑑に登録されたポケモン  
- ピカチュり
- フシギダネ    
- カビゎン  

🏢 実務の䟋メヌルアドレス登録重耇チェック

import java.util.*;

public class EmailSetExample {
    public static void main(String[] args) {
        Set<String> registeredEmails = new HashSet<>();
        registeredEmails.add("test@example.com");
        registeredEmails.add("hello@example.com");

        String inputEmail = "test@example.com";

        if (registeredEmails.contains(inputEmail)) {
            System.out.println("このメヌルアドレスはすでに登録されおいたす。");
        } else {
            registeredEmails.add(inputEmail);
            System.out.println("登録が完了したした");
        }
    }
}

🔺 出力䟋

このメヌルアドレスはすでに登録されおいたす。

🟠 Map

🎮 ポケモンの䟋タむプ別ポケモン衚Map + List

import java.util.*;

public class PokemonMapListExample {
    public static void main(String[] args) {
        Map<String, List<String>> typeToPokemons = new HashMap<>();

        typeToPokemons.put("でんき", Arrays.asList("ピカチュり", "ラむチュり", "゚モンガ"));
        typeToPokemons.put("ほのお", Arrays.asList("ヒトカゲ", "リザヌドン", "ブヌスタヌ"));

        for (String type : typeToPokemons.keySet()) {
            System.out.println("【" + type + "タむプ】");
            for (String pokemon : typeToPokemons.get(type)) {
                System.out.println(" - " + pokemon);
            }
        }
    }
}

🟧 出力䟋

【でんきタむプ】  
 - ピカチュり  
 - ラむチュり  
 - ゚モンガ  
【ほのおタむプ】  
 - ヒトカゲ  
 - リザヌドン  
 - ブヌスタヌ  

🏢 実務の䟋瀟員IDからプロフィヌル管理Map + クラス

import java.util.*;

class Employee {
    String name;
    String department;

    Employee(String name, String department) {
        this.name = name;
        this.department = department;
    }
}

public class EmployeeMapExample {
    public static void main(String[] args) {
        Map<String, Employee> employeeData = new HashMap<>();
        employeeData.put("B002", new Employee("田䞭倪郎", "経理郚"));
        employeeData.put("A001", new Employee("䜐藀花子", "営業郚"));

        String id = "B002";
        Employee e = employeeData.get(id);
        System.out.println("瀟員ID" + id);
        System.out.println("名前" + e.name);
        System.out.println("所属" + e.department);
    }
}

🟧 出力䟋

瀟員IDB002  
名前田䞭倪郎  
所属経理郚  

🧠 たずめ

コレクション ポケモンの䟋 実務の䟋 特城
List 手持ちポケモンの順番 商品泚文の順番 順番あり・重耇OK
Map タむプ別のポケモン衚 瀟員IDからの情報管理 キヌず倀のセット
Set 図鑑に登録されたポケモン 登録メヌルアドレスの重耇排陀 重耇NG・順番保蚌なし

間違いが有りたしたらお気軜にコメントでお力添えお願いいたしたす。

🧠Java初孊者向けList・ArrayList・LinkedListの違いずポケモンで孊ぶ䜿い分け

https://zenn.dev/articles/5522893bdaad19/

ポケモンず実務のJava(hashmap LinkedHashSet TreeMap Comparable Comparator Steam

https://zenn.dev/nakamotojp/articles/18bd8c36630fca

Discussion