Java8 復習 : 色々なコレクションで ForEach してみる
Java8 の Stream API をお試しする。今回は色々なコレクション要素に対して ForEach する処理を書いてみた。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Java8ForEach {
public static void main(String[] args) {
// Array を ForEach
String[] presidentsArray = {
"Richard Nixon",
"Gerald Ford",
"Jimmy Carter",
"Ronald Reagan",
"George Bush",
"Bill Clinton",
"George Bush",
"Barack Obama"
};
// 配列は Stream に変換してから操作する
Arrays.stream(presidentsArray).forEach(president -> System.out.println(president));
// List を ForEach
List<String> presidentsList = new ArrayList<String>(){{
add("Richard Nixon");
add("Gerald Ford");
add("Jimmy Carter");
add("Ronald Reagan");
add("George Bush");
add("Bill Clinton");
add("George Bush");
add("Barack Obama");
}};
// 引数が1つならパーレン () は省略可能
presidentsList.forEach(president -> System.out.println(president));
// Map を ForEach
Map<Integer, String> presidentsMap = new HashMap<Integer, String>(){{
put(1969, "Richard Nixon");
put(1974, "Gerald Ford");
put(1977, "Jimmy Carter");
put(1981, "Ronald Reagan");
put(1989, "George Bush");
put(1993, "Bill Clinton");
put(2001, "George Bush");
put(2009, "Barack Obama");
}};
// Map は引数が2つになるのでパーレン () が必要
presidentsMap.forEach((key, value) -> System.out.println(key + " : " + value));
// ループ内では continue・break は使えないので要注意。return すると continue に似た動きになる
}
}
初歩的なところだが、JavaScript 脳だとウッカリしそうなのが配列の場合か。Java は当然ながら型が厳格なので、List と同じ感覚では扱えない。Stream に変換するイディオムを忘れないようにしないと。