水平野(すいへいや)

思ったこと考えたことを書いていく

Stream APIでFizzBuzzに挑戦したらなんだこれは

StreamAPIの勉強のため色々やり方を探していたら、ふとこの記事が目に入った。

forやifで書くアレをStream APIで書く - Java EE 事始め!

ここで文字列結合をしているコードがあったので、コメントでそのことを指摘してみた。
ただ、それだけではあれなので、自分なりに作ってみた。
それがこれだ。

IntStream.rangeClosed(1, 40)
	.filter(val -> {
		if(val % 15 == 0) {
			System.out.print("FizzBuzz");
			System.out.print(",");
			return false;
		}
		return true;
	}).filter(val -> {
		if(val % 5 == 0) {
			System.out.print("Buzz");
			System.out.print(",");
			return false;
		}
		return true;
	}).filter(val -> {
		if(val % 3 == 0) {
			System.out.print("Fizz");
			System.out.print(",");
			return false;
		}
		return true;
	}).filter(val -> {
		System.out.print(val);
		System.out.print(",");
		return false;
	}).count();

な、な、な、なんだこれは―

なんというか、もう…。
いや、やり方としてはこれが正しいはずだと思うのだけど…。
はあ。