【Java】for文のいろいろな書き方

for文の書き方をまとめていきます。

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の使いどころに悩んでいましたが、今後の開発にはどんどん使用していきたいと思っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です