package answers.section4;
import java.util.Arrays;
import java.util.List;
public class S401StreamInsteadOfFor {
public S401StreamInsteadOfFor() {
filterEven();
filterEvenAnswer1();
filterEvenAnswer2();
filterEvenAnswer3();
}
private void filterEven() {
List<Integer> numbers = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
for (Integer x : numbers) {
if (x % 2 == 0) {
System.out.print(x + " ");
}
}
System.out.println();
}
private void filterEvenAnswer1() {
List<Integer> numbers = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// Stream API で置き換え
// filter メソッドのラムダ式には if 文の条件をそのまま使用する
numbers.stream()
.filter(x -> x % 2 == 0)
.forEach(x -> System.out.print(x + " "));
System.out.println();
}
private void filterEvenAnswer2() {
List<Integer> numbers = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// map メソッドを使用して Integer から、後ろに空白を追加した文字列へ変換
numbers.stream()
.filter(x -> x % 2 == 0)
.map(x -> x + " ")
.forEach(text -> System.out.print(text));
System.out.println();
}
private void filterEvenAnswer3() {
List<Integer> numbers = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// メソッド参照を使用
numbers.stream()
.filter(x -> x % 2 == 0)
.map(x -> x + " ")
.forEach(System.out::print);
System.out.println();
}
public static void main(String[] args) {
new S401StreamInsteadOfFor();
}
}