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中級コレクション編:ポケモンと実務で学ぶ便利な使い方7選(hashmap LinkedHashSet TreeMap Collections Comparable Comparator Steam API)

Posted at

🧩 Java中級コレクション編:ポケモンと実務で学ぶ便利な使い方7選


🔰 目次

  1. HashMapを使う場合
  2. LinkedHashSetで順番保証付きのSet
  3. TreeMapでキー順ソートされるMap
  4. Collectionsを使う場合
  5. 自然順序付けでのソートする場合(Comparable)
  6. Comparatorを使う場合
  7. Stream APIを使う場合

1. HashMapを使う場合

🎮 ポケモンの例:ポケモンと技の対応表

// ======================================
// 1. HashMap:高速アクセス・順番保証なし
// ======================================

// 🧢 ポケモンの例:ポケモンと技
import java.util.*;

public class HashMapExample {
    public static void main(String[] args) {
        // ポケモンの名前をキーにして、覚えている技をバリューに登録
        Map<String, String> moveMap = new HashMap<>();
        moveMap.put("ピカチュウ", "10まんボルト");
        moveMap.put("リザードン", "かえんほうしゃ");
        moveMap.put("カビゴン", "のしかかり");

        // ピカチュウがどんな技を持っているか調べる
        System.out.println("ピカチュウの技:" + moveMap.get("ピカチュウ"));
    }
}

🟨 出力例

ピカチュウの技:10まんボルト

🛒 実務例:商品コードと商品名の対応表

// 🛒 実務例:商品コードと商品名の対応表
import java.util.*;

public class ProductHashMap {
    public static void main(String[] args) {
        // 商品コードをキーに、商品名をバリューに
        Map<String, String> productMap = new HashMap<>();
        productMap.put("A001", "りんご");
        productMap.put("B002", "バナナ");

        // 商品コードA001の名前を出力
        System.out.println("A001の商品は:" + productMap.get("A001"));
    }
}


🟨 出力例

A001の商品は:りんご

2. LinkedHashSetで順番保証付きのSet

🎮 ポケモンの例:ジムバッジの入手順

// ===================================================
// 2. LinkedHashSet:重複NG・順番保持
// ===================================================

// 🏅 ポケモンの例:ジムバッジの取得順
import java.util.*;

public class LinkedHashSetExample {
    public static void main(String[] args) {
        // ジムリーダーの名前を登録(順番あり・重複なし)
        Set<String> badges = new LinkedHashSet<>();
        badges.add("タケシ");
        badges.add("カスミ");
        badges.add("マチス");

        // 取得順に出力
        for (String badge : badges) {
            System.out.println("バッジ:" + badge);
        }
    }
}

🟧 出力例

バッジ:タケシ  
バッジ:カスミ  
バッジ:マチス  

🧾 実務例:訪問順の顧客記録

// ===================================================
// 2. LinkedHashSet:重複NG・順番保持
// ===================================================

// 🧾 実務例:訪問順の顧客記録
import java.util.*;

public class ClientVisitExample {
    public static void main(String[] args) {
        // 訪問した顧客の名前(順番を記録)
        Set<String> clients = new LinkedHashSet<>();
        clients.add("山田商事");
        clients.add("田中建設");
        clients.add("佐藤製作所");

        for (String name : clients) {
            System.out.println("訪問先:" + name);
        }
    }
}

🟧 出力例

訪問先:山田商事
訪問先:田中建設
訪問先:佐藤製作所

3. TreeMapでキー順ソートされるMap

🎮 ポケモンの例:ポケモンの図鑑番号と名前

// ===================================================
// 3. TreeMap:キー順ソート自動
// ===================================================

// 📚 ポケモンの例:図鑑番号とポケモン名
import java.util.*;

public class TreeMapExample {
    public static void main(String[] args) {
        // 図鑑番号(キー)で自動的にソートされる
        Map<Integer, String> pokedex = new TreeMap<>();
        pokedex.put(25, "ピカチュウ");
        pokedex.put(6, "リザードン");
        pokedex.put(1, "フシギダネ");

        for (Map.Entry<Integer, String> entry : pokedex.entrySet()) {
            System.out.println(entry.getKey() + "番:" + entry.getValue());
        }
    }
}

🟩 出力例

1番:フシギダネ  
6番:リザードン  
25番:ピカチュウ  

📊 実務例:社員IDと名前を昇順で表示

// ===================================================
// 3. TreeMap:キー順ソート自動
// ===================================================

// 📊 実務例:社員IDと名前を昇順で表示
import java.util.*;

public class EmployeeTreeMap {
    public static void main(String[] args) {
        Map<String, String> employees = new TreeMap<>();
        employees.put("E003", "高橋");
        employees.put("E001", "佐藤");
        employees.put("E002", "田中");

        for (String id : employees.keySet()) {
            System.out.println("社員ID: " + id + " 氏名: " + employees.get(id));
        }
    }
}

🟩 出力例

社員ID: E001 氏名: 佐藤
社員ID: E002 氏名: 田中
社員ID: E003 氏名: 高橋

4. Collectionsを使う場合(ソートやシャッフル)

🎲 ポケモンの例:技をランダムに選ぶ

// ===================================================
// 4. Collectionsユーティリティ:シャッフルや並べ替え
// ===================================================

// 🎲 ポケモンの例:技をランダムに選ぶ
import java.util.*;

public class CollectionsShuffleExample {
    public static void main(String[] args) {
        List<String> moves = Arrays.asList("10まんボルト", "でんこうせっか", "アイアンテール");
        Collections.shuffle(moves); // リストの順番をランダムに
        System.out.println("選ばれた技: " + moves.get(0));
    }
}

🟪 出力例

選ばれた技:10まんボルト(※毎回ランダム)

🍀 実務例:抽選で当選者を決める

// ===================================================
// 4. Collectionsユーティリティ:シャッフルや並べ替え
// ===================================================

// 🍀 実務例:抽選で当選者を決める
import java.util.*;

public class LotteryExample {
    public static void main(String[] args) {
        List<String> users = Arrays.asList("山田", "田中", "佐藤", "高橋");
        Collections.shuffle(users);
        System.out.println("当選者は: " + users.get(0));
    }
}

🟪 出力例

当選者は: 佐藤

5. 自然順序付けでのソートする場合(Comparable)

🎮 ポケモンの例:ポケモン名を五十音順で並べ替え

// ===================================================
// 5. Comparable:自然順序での並べ替え
// ===================================================

// 🎮 ポケモンの例:ポケモン名を五十音順で並べ替え
import java.util.*;

public class SortPokemonExample {
    public static void main(String[] args) {
        List<String> pokemons = Arrays.asList("ピカチュウ", "フシギダネ", "カビゴン");
        Collections.sort(pokemons); // 自然順(文字列の昇順)
        for (String name : pokemons) {
            System.out.println(name);
        }
    }
}

🟨 出力例

カビゴン  
ピカチュウ  
フシギダネ  

📂 実務例:商品名をアルファベット順で並べる

// ===================================================
// 5. Comparable:自然順序での並べ替え
// ===================================================

// 📂 実務例:商品名をアルファベット順で並べる
import java.util.*;

public class ProductSortExample {
    public static void main(String[] args) {
        List<String> items = Arrays.asList("Apple", "Banana", "Carrot");
        Collections.sort(items);
        for (String item : items) {
            System.out.println(item);
        }
    }
}

🟨 出力例

Apple
Banana
Carrot

6. Comparatorを使う場合

🧮 実務例:ポケモンの文字数で並べる

// ===================================================
// 6. Comparator:独自ルールでソート
// ===================================================

// 🧮 実務例:ポケモンの文字数で並べる
import java.util.*;

public class NameLengthSortExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("ピカチュー", "ピチュー", "パモ");
        names.sort(Comparator.comparingInt(String::length));
        for (String name : names) {
            System.out.println(name);
        }
    }
}

🟥 出力例

パモ
ピチュー 
ピカチュー

🧮 実務例:顧客名の文字数で並べる

// ===================================================
// 6. Comparator:独自ルールでソート
// ===================================================

// 🧮 実務例:顧客名の文字数で並べる
import java.util.*;

public class NameLengthSortExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("佐藤", "田中太郎", "鈴木一郎");
        names.sort(Comparator.comparingInt(String::length));
        for (String name : names) {
            System.out.println(name);
        }
    }
}

🟥 出力例

佐藤  
鈴木一郎  
田中太郎  

7. Stream APIを使う場合

🎮 ポケモンの例:HP100以上のポケモンだけを抽出

// ===================================================
// 7. Stream API:絞り込み・集計・加工など
// ===================================================

// 🎮 ポケモンの例:HP100以上のポケモンだけを抽出
import java.util.*;
import java.util.stream.*;

class Pokemon {
    String name;
    int hp;
    Pokemon(String name, int hp) {
        this.name = name;
        this.hp = hp;
    }
}

public class StreamPokemonExample {
    public static void main(String[] args) {
        List<Pokemon> team = Arrays.asList(
            new Pokemon("ピカチュウ", 90),
            new Pokemon("リザードン", 120),
            new Pokemon("カビゴン", 160)
        );

        team.stream()
            .filter(p -> p.hp >= 100) // HP100以上を抽出
            .forEach(p -> System.out.println(p.name + "(HP: " + p.hp + ")"));
    }
}

🟦 出力例

リザードン(HP: 120)
カビゴン(HP: 160)  

🏢 実務例:時給1000円以上のスタッフだけを抽出

// ===================================================
// 7. Stream API:絞り込み・集計・加工など
// ===================================================

// 🏢 実務例:時給1000円以上のスタッフだけを抽出
import java.util.*;
import java.util.stream.*;

class Staff {
    String name;
    int wage;
    Staff(String name, int wage) {
        this.name = name;
        this.wage = wage;
    }
}

public class StreamStaffExample {
    public static void main(String[] args) {
        List<Staff> staffList = Arrays.asList(
            new Staff("山田", 950),
            new Staff("田中", 1200),
            new Staff("佐藤", 1050)
        );

        staffList.stream()
            .filter(s -> s.wage >= 1000)
            .forEach(s -> System.out.println(s.name + "(時給: " + s.wage + "円)"));
    }
}

🟦 出力例

田中(時給: 1200円)
佐藤(時給: 1050円)

🧠 まとめ

機能・API 主な用途 特徴
HashMap 素早く情報取得したいとき 高速アクセス・順番保証なし
LinkedHashSet 順番も大切な重複なし集合 重複NG・順番保持
TreeMap キー順で自動ソートしたいとき キー順ソート自動
Collections ソート・シャッフルなど便利機能 ユーティリティ系メソッドが豊富
Comparable 自然順(文字・数値)ソート 自然順序(例:あいうえお順)
Comparator 独自ルールで並べ替えたい 柔軟なカスタムソート
Stream API 絞り込み・集計・加工 宣言的でスマートに操作可能
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?