Java可选示例

在Java 8中引入了Lambda和可选类,我们可以过滤一个Stream,如果返回任何Object,我们可以使用该对象调用一个方法。

句法:

	ifPresent( a -> {  } );

使用ifPresent方法可以编写更清晰的代码,因为我们不必测试返回的对象是否为空。

例:

下面是创建一个串流的例子。 首先,它尝试使用可选对象找到第一个元素。 然后使用不存在的值过滤Stream,并且该代码获得对于不存在的第一个值的可选。 boolean isPresent是false。 最后,代码创建一个流,对存在的值进行过滤,找到第一个值,并且ifPresent在输出中使用消息来写入值。

创建以下java文件:

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

参考文献:

Lambda Expressions

最近评论