中间操作和终端操作有什么区别?

2024-03-24

有人可以告诉我中间操作和终端操作有什么区别Stream?

Stream操作被组合到管道中来处理流。所有操作要么是中间操作,要么是最终操作..意味着?


一个Stream支持多种操作,这些操作分为intermediate and terminal运营。

这些操作之间的区别在于中间操作是惰性的,而终端操作则不是。当您对流调用中间操作时,该操作不会立即执行。仅当对该流调用终端操作时才执行它。在某种程度上,中间操作会被记忆,并在调用终端操作时立即调用。您可以链接多个中间操作,并且在您调用终端操作之前,它们都不会执行任何操作。那时,您之前调用的所有中间操作都将与终端操作一起调用。

所有中间操作都返回 Stream(可以链接),而终端操作则不会。中间操作是:

filter(Predicate<T>)
map(Function<T>)
flatMap(Function<T>)
sorted(Comparator<T>)
peek(Consumer<T>)
distinct()
limit(long n)
skip(long n)

终端操作产生非流(无法链接)结果,例如原始值、集合或根本没有值。

终端操作有:

forEach
forEachOrdered
toArray
reduce
collect
min
max
count
anyMatch
allMatch
noneMatch
findFirst    
findAny

最后5个是短路端子操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

中间操作和终端操作有什么区别? 的相关文章

随机推荐