- 開発技術
JavaでMapをループさせる
- #Java
目次
JavaでMapをループさせる4つの方法
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
JavaでMapをループさせる4つの方法について紹介する。
方法1:Map.EntrySetをfor-eachでループする
1 2 3 4 5 6 7 8 9 |
Map<String, Integer> map = new HashMap<>(); map.put("a", 97); map.put("b", 98); map.put("c", 99); for(Map.Entry<String, Integer> entry : map.entrySet()){ String key = entry.getKey(); Integer value = entry.getValue(); System.out.println(key + ":" + value); } |
よく使われている方法です。マップのキーと値をペアでループすることができます。
方法2:Map.KeySetかMap.ValueSetをfor-eachでループする
1 2 3 4 5 6 7 8 9 10 |
Map<String, Integer> map = new HashMap<>(); map.put("a", 97); map.put("b", 98); map.put("c", 99); for(String key : map.keySet()){ System.out.println(key); } for(Integer value : map.values()){ System.out.println(value); } |
マップのキーか値のみが必要な場合によく使う方法です。
keySetをループする時にmap.get(key)方法を使って値を取得できるが、非効率的ためお勧めしません。
方法3:Iteratorでループする
1 2 3 4 5 6 7 8 9 10 11 |
Map<String, Integer> map = new HashMap<>(); map.put("a", 97); map.put("b", 98); map.put("c", 99); Iterator<Map.Entry<String, Integer> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, Integer> entry = iterator.next(); String key = entry.getKey(); Integer value = entry.getValue(); System.out.println(key + ":" + value); } |
Java5前のバージョンで唯一マップをループさせる方法です。
Java5以降はだいたいforeach-entrySetの方法を使います。
ループ中にマップの要素を削除したい場合、この方法がお勧めです。
方法4:Lambda式を使ってループする
1 2 3 4 5 6 7 8 9 10 11 |
Map<String, Integer> map = new HashMap<>(); map.put("a", 97); map.put("b", 98); map.put("c", 99); map.forEach((key, value) -> System.out.println(key + ":" + value)); map.forEach((key, value) -> { System.out.println(key + ":" + value); }); map.entrySet().stream().foreatch(entry -> { System.out.println(entry.getKey() + ":" + entry.getValue()); }); |
Java8以降でLambda式を使えるようになりました。
ソースコードがより簡潔に見えます。
効率がforeach-entrySetより低いです。大量のデータを処理する時はforeach-entrySetを使ったほうがいいと思います。
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>