Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

書籍 パーフェクトJava | マップのループ処理

パンくず

書籍 パーフェクトJava
マップのループ処理

概要

Javaのマップのループ処理について

Javaのマップのループ処理

三種類のリストを扱える
keyリスト

Map#keySet

valueリスト

Map#values

key,valueの組み合わせリスト

Map#EntrySet

その他

ソート済みMapを利用したい場合はTreeMapを使用。

Map<String, String> treeMap = new TreeMap<String, String>();

リストの逆方向のループを行いたい場合はListIteratorを使用

サンプルコード

package perfect.map;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;

public class MapLoopSample {
  public static void main(String[] args) {
    Map<String, String> map = new HashMap<String, String>();
    map.put("ほげ", "hoge");
    map.put("はげ", "hage");
    map.put("ひげ", "hige");
    map.put("あ", "a");

    System.out.print("keySet:|");
    for (String key : map.keySet()) {
      System.out.print(key + "|");
    }
    System.out.println("");

    System.out.print("values:|");
    for (String value : map.values()) {
      System.out.print(value + "|");
    }
    System.out.println("");

    System.out.print("entrySet:|");
    for (Entry<String, String> entry : map.entrySet()) {
      System.out.print(entry + "|");
    }
    System.out.println("");

    System.out.println("------------------------------");
    System.out.println("TreeMapによるソート済みマップ");
    // ソートされたMapを使用
    Map<String, String> treeMap = new TreeMap<String, String>(map);
    System.out.print("keySet:|");
    for (String key : treeMap.keySet()) {
      System.out.print(key + "|");
    }
    System.out.println("");

    System.out.println("------------------------------");
    System.out.println("ListIteratorによる逆走査");

    List<String> list = Arrays.asList("はげ","ほげ","ひげ");
    System.out.println(list);
    ListIterator<String> listIterator = list.listIterator(list.size());
    System.out.print("ListIterator#previous:|");
    while(listIterator.hasPrevious()) {
      String value = listIterator.previous();
      System.out.print(value + "|");
    }
    System.out.println("");
  }

}

出力

keySet:|はげ|あ|ひげ|ほげ|
values:|hage|a|hige|hoge|
entrySet:|はげ=hage|あ=a|ひげ=hige|ほげ=hoge|
------------------------------
TreeMapによるソート済みマップ
keySet:|あ|はげ|ひげ|ほげ|
------------------------------
ListIteratorによる逆走査
[はげ, ほげ, ひげ]
ListIterator#previous:|ひげ|ほげ|はげ|