/** * ドメイン非依存URL出力フィルタ * javadrill.tech移行時はwp_options.home/siteurlのみ変更すればよい * * データベースには絶対URL(https://minner.asia)を保持し、 * 表示時に現在のドメイン(home_url())に動的変換する */ function javadrill_make_urls_dynamic($content) { if (empty($content)) { return $content; } // データベース内の絶対URLを現在のhome_url()に置換 $old_url = 'https://minner.asia'; $new_url = untrailingslashit(home_url()); // http版も対応(念のため) $content = str_replace($old_url, $new_url, $content); $content = str_replace('http://minner.asia', $new_url, $content); return $content; } // 投稿本文、ウィジェット、タームの説明、抜粋に適用 add_filter('the_content', 'javadrill_make_urls_dynamic', 20); add_filter('widget_text', 'javadrill_make_urls_dynamic', 20); add_filter('term_description', 'javadrill_make_urls_dynamic', 20); add_filter('get_the_excerpt', 'javadrill_make_urls_dynamic', 20); 102 「Map修羅道」 Step02 解答例 | Javaドリル

102 「Map修羅道」 Step02 解答例

102-step02 102「Map修羅道」

MapUtil.java

import java.util.HashMap;
import java.util.Map;

public class MapUtil {
    public static void printDepartments() {
        // 社員番号と部署名を記録するMapを作成
        Map<Integer, String> departmentMap = new HashMap<>();

        // データを登録
        departmentMap.put(2001, "Sales");
        departmentMap.put(2002, "HR");
        departmentMap.put(2003, "Engineering");

        // ---- keySet() を使ったループ ----
        System.out.println("=== keySet() を使った出力 ===");
        for (Integer empId : departmentMap.keySet()) {
            // key(社員番号)から value(部署名)を取得する
            String department = departmentMap.get(empId);
            System.out.println(empId + " → " + department);
        }

        // ---- entrySet() を使ったループ ----
        System.out.println("=== entrySet() を使った出力 ===");
        for (Map.Entry<Integer, String> entry : departmentMap.entrySet()) {
            // entry から key と value を同時に取り出す
            Integer empId = entry.getKey();
            String department = entry.getValue();
            System.out.println(empId + " → " + department);
        }
    }
}

解説:Mapをループで出力する2つの方法

JavaのMapをループで出力するには、主に以下の2通りの方法があります。


方法①:keySet() を使う

for (Integer key : map.keySet()) {
    String value = map.get(key);
    System.out.println(key + " → " + value);
}
  • keySet() はすべてのキーを取得できる
  • キーから値を取得するために map.get(key) を毎回呼び出す必要がある
  • 単純だが、Mapが大きくなるとパフォーマンス面でやや不利

方法②:entrySet() を使う

for (Map.Entry<Integer, String> entry : map.entrySet()) {
    Integer key = entry.getKey();
    String value = entry.getValue();
    System.out.println(key + " → " + value);
}
  • entrySet() はキーと値のペア(Entry)を一括で扱える
  • getKey() と getValue() を使ってそれぞれ取得
  • Mapの中身をすべて処理する場面では推奨される方法

実行結果の例(順不同):

=== keySet() を使った出力 ===
2001 → Sales
2002 → HR
2003 → Engineering

=== entrySet() を使った出力 ===
2001 → Sales
2002 → HR
2003 → Engineering

※ HashMap は順序を保証しないため、出力順は実行環境により異なる可能性があります。


まとめ:このステップで学ぶべきこと

  • Mapをループ処理する際の2通りの方法を体得する
  • keySet()は構造がシンプル、entrySet()は効率的
  • 実用上は entrySet() が推奨されるシーンが多い

102 ステップアップ問題 「Map修羅道」


Just Keep Typing, Baby!では、この「Map修羅道」でつまづいた人向けの解説をしています。こちらもぜひ!

// tesh:
// まだ納得してないやろ? なら、こっち来い。

コメント

タイトルとURLをコピーしました