java stream findany_Java Stream findFirst() vs findAny() API With Example

Java Stream接口具有两个方法,即findFirst()和findAny() 。 两种方法看起来非常相似,但是在某些情况下它们的行为可能有所不同。 在本文中,学习findFirst()和findAny()方法之间的区别 。

1. Stream findFirst() method

1.1. DescriptionOptional findFirst()

此方法返回一个Optional描述此流的第一个元素 。 如果流有:

defined encounter order –流中遇到顺序中的第一个元素。

no encounter order –可以返回任何元素。

上面的理论对所有顺序流和并行流均无效,并且findFirst()的行为不会改变。

1.2. Stream findFirst() exampleimport java.util.stream.Stream;

public class Main

{

public static void main(String[] args)

{

//sequential stream

Stream.of("one", "two", "three", "four")

.findFirst()

.ifPresent(System.out::println);

//parallel stream

Stream.of("one", "two", "three", "four")

.parallel()

.findFirst()

.ifPresent(System.out::println);

}

}

Program output.one

one

2. Stream findAny() method

2.1. DescriptionOptional findAny()

此方法返回一个Optional描述此流的any元素 。 如果流有:defined encounter order –可以返回任何元素。

no encounter order –可以返回任何元素。

上面的理论对所有顺序流和并行流均findAny()并且findAny()的行为不会改变。在非并行流中,在大多数情况下, findAny()将返回第一个元素,但这种行为不会得到保证。

Stream.findAny()在并行流的情况下引入Stream.findAny()方法以提高性能。

2.2. Stream findAny() exampleimport java.util.stream.Stream;

public class Main

{

public static void main(String[] args)

{

//sequential stream

Stream.of("one", "two", "three", "four")

.findAny()

.ifPresent(System.out::println);

//parallel stream

Stream.of("one", "two", "three", "four")

.parallel()

.findAny()

.ifPresent(System.out::println);

}

}

Program output.one

three

3. Stream findFirst() vs findAny() – Conclusion

在本文中,我们了解了Java 8 Stream API findFirst()和findAny()方法之间的区别。 在非并行流中,在大多数情况下,两者都可能返回流的第一个元素,但是findAny()不提供此行为的任何保证。

使用findAny()可以更快地从任何并行流中获取任何元素。 在大多数情况下,我们总是可以使用findFirst() 。

Reference :

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值