for文の書き方をまとめていきます。
Contents
for文を実行してみる
Mainクラスを作成して実行していきます。
ノーマル?なfor文
インデックスを定義して指定できるfor文。
ループのN回目のときだけ、条件判定したいときに使える。
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
拡張for文(Java5~)
コードがだいぶスッキリになったfor文。
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
for (String s : list) {
System.out.println(s);
}
}
forEachメソッド(Java8~)
1行でループ処理できる書き方。
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.stream().forEach(s -> System.out.println(s));
// ↓↓は変数省略した「メソッド参照」という書き方
list.stream().forEach(System.out::println);
}
StreamAPIでループ処理してみる
Streamの中で条件分岐(List)
アロー関数( -> )の右隣に{}を記載すると、複数処理の記載ができるようになる。
9行目の「return」は、breakという意味ではなく、continueと同じ扱いになる。
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.stream().forEach(s -> {
if ("B".equals(s)) {
System.out.println("Bです。");
return;
}
System.out.println(s);
});
}
Streamの中で条件分岐(配列)
拡張for文のほうが短く書けるし、微妙。。
public static void main(String[] args) {
String[] strs = {"A","B","C"};
Arrays.stream(strs).forEach(s -> {
if ("B".equals(s)) {
System.out.println("Bです。");
return;
}
System.out.println(s);
});
}
Streamの中で条件分岐(Map)
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(1, "A");
map.put(2, "B");
map.put(3, "C");
map.forEach((key, value) -> {
if ("B".equals(value)) {
System.out.println("Bです。");
return;
}
System.out.println(value);
});
}
あとがき
Java8が出てからも、StreamAPIの使いどころに悩んでいましたが、今後の開発にはどんどん使用していきたいと思っています。
コメントを残す