LambdaとOptional
クラスが導入されたJava 8では、Stream
をフィルタリングでき、Objectが返された場合、そのObjectでメソッドを呼び出すことができます。
ifPresent( a -> { } );
ifPresentメソッドを使用すると、返されるObjectがnullかどうかをテストする必要がないため、よりクリーンなコードを書くことができます。
次に、ストリングのストリームを作成する例を示します。 最初に、オプションオブジェクトを使って最初の要素を見つけようとします。 次に、存在しない値を使用してストリームがフィルタリングされ、コードは存在しない最初の値に対してオプションを取得します。 boolean isPresentはfalseです。 最後に、コードはStreamを作成し、存在する値をフィルタリングし、最初の値を見つけて、ifPresentが値をメッセージに出力に書き出します。
import java.util.Optional; import java.util.stream.Stream; public class LambdaOptional { public static void main(String[] argv){ // Create the Stream Stream<String> stream = Stream.of( "a", "c", "a", "b", "b"); // Get the first element from the Stream Optional<String> op = stream.findFirst(); System.out.println( "isPresent: " + op.isPresent() ); System.out.println( "first element: " + op.get() ); // Same test with a value that doesn't exist op = Stream.of( "a", "c", "a", "b", "b") .filter( a -> a.equals( "z" ) ) .findFirst(); System.out.println( "isPresent: " + op.isPresent() ); // Same test using ifPresent Stream.of( "a", "c", "a", "b", "b") .filter( a -> a.equals( "a" ) ) .findFirst() .ifPresent( a -> System.out.println( "Value found: " + a ) ); } }
isPresent: true first element: a isPresent: false Value found: a