Java9で匿名クラスにダイヤモンド演算子が使えるようになった。
List<String> list = new ArrayList<>() {}; // Java8だとパラメータの型を明示的に指定する必要がある List<String> list = new ArrayList<String>() {};
Java9で匿名クラスにダイヤモンド演算子が使えるようになった。
List<String> list = new ArrayList<>() {}; // Java8だとパラメータの型を明示的に指定する必要がある List<String> list = new ArrayList<String>() {};
Java9の新機能を試す。今回はStream APIの追加メソッド。
predicateのtestメソッドがtrueを返すまで要素を取得する。
// 1, 2を出力 List.of(1, 2, 3, 4, 5).stream() .takeWhile(i -> i != 3).forEach(System.out::println); // 1, 2, 3, 4を出力 List.of(1, 2, 3, 4, 5).stream() .takeWhile(i -> i != 5).forEach(System.out::println);
takeWhileの逆。
predicateのtestメソッドがtrueを返すまで要素を破棄。
// 3, 4, 5を出力 List.of(1, 2, 3, 4, 5).stream() .dropWhile(i -> i != 3).forEach(System.out::println); // 5を出力 List.of(1, 2, 3, 4, 5).stream() .dropWhile(i -> i != 5).forEach(System.out::println);
順序付けられていないストリームを扱うときは出力結果が変わるので注意が必要。
// 3, 2, 1, 5, 4 を出力したり // 3, 1 を出力したり毎回異なる Set.of(1, 2, 3, 4, 5).stream() .dropWhile(i -> i != 3).forEach(System.out::println);
渡される値がnullの場合に要素が0個のストリームを返す。
渡される値がnullではない場合に要素が1個のストリームを返す。
// 0 Stream.ofNullable(null).count(); // 1 Stream.ofNullable("Foo").count();
ストリームでfor文と同じことができる。
// 0, 1, 2, 3, 4, 5を出力 Stream.iterate(0, i -> i < 5, i -> i + 1).forEach(System.out::println);
Java9の新機能を試す。 今回はOptionalに追加されたメソッド。
値が存在する場合のみactionを実行する。
// Foo が出力される Optional.ofNullable("Foo").ifPresent(System.out::println); // 何も出力されない Optional.ofNullable(null).ifPresent(System.out::println);
値が存在する場合はactionを実行する。
値が存在しない場合はemptyActionを実行する。
// Foo が出力される Optional.ofNullable("Foo").ifPresentOrElse( System.out::println, () -> System.out.println("Bar")); // Bar が出力される Optional.ofNullable(null).ifPresentOrElse( System.out::println, () -> System.out.println("Bar"));
値が存在する場合はそのOptionalを返す。
値が存在しない場合はsupplierが返すOptionalを返す。
// Foo が出力される Optional.ofNullable("Foo").or(() -> Optional.of("Bar")).ifPresent(System.out::println); // Bar が出力される Optional.ofNullable(null).or(() -> Optional.of("Bar")).ifPresent(System.out::println);
値が存在する場合は要素が1個のストリームを返す。
値が存在しない場合は要素が0個のストリームを返す。
// 1 Optional.ofNullable("Foo").stream().count(); // 0 Optional.ofNullable(null).stream().count();