JavaのStreamでFizzBuzz
if文とfor文のないfizzbuzzです。
import java.util.function.Function; import java.util.stream.IntStream; import java.util.stream.Stream; public class FizzBuzzMain { public static void main(String[] args) { // {\x->"Fizz", id, id} Function<String,String>[] fizz = Stream.generate(() -> Function.identity()).limit(3).toArray(Function[]::new); fizz[0] = s -> "Fizz"; // {\x->"Buzz", id, id, id, id} Function<String,String>[] buzz = Stream.generate(() -> Function.identity()).limit(5).toArray(Function[]::new); buzz[0] = s -> "Buzz"; // {\x->"FizzBuzz", id, id, ..., id} Function<String,String>[] fizzbuzz = Stream.generate(() -> Function.identity()).limit(15).toArray(Function[]::new); fizzbuzz[0] = s -> "FizzBuzz"; //1~30の整数に、上のラムダ式を適用 IntStream.rangeClosed(1, 30) .mapToObj(n -> fizzbuzz[n % 15].apply( buzz[n % 5].apply( fizz[n % 3].apply(String.valueOf(n)) ) ) ) .forEach(System.out::println); } }