gpt4 book ai didi

java - 如果列表的总大小小于限制,stream().limit() 会优化执行吗?

转载 作者:行者123 更新时间:2023-12-02 01:42:57 26 4
gpt4 key购买 nike

如果limit值大于 list 的大小,java会优化而不执行这段代码吗?

List<Long> someList = Arrays.asList(1L, 2L, 3L, 4L, 5L);
int limit = 5;
List<Long> limitedList = someList.stream().limit(limit).collect(Collectors.toList());

比方说,limit = 1000000someList.size() = 99999 .

现在,java 是否有足够的智能来理解列表大小小于限制?还是会盲目地遍历列表中的每个数字,直到到达列表末尾或达到限制?

最佳答案

不,它不会优化执行(即使在 JDK 11 中)。

让我们尝试最简单的终端操作(count):

var someList = Arrays.asList(1, 2, 3, 4, 5);
var limit = 10_000;
System.out.println(someList
.stream()
.peek(System.out::println)
.limit(limit)
.count());

程序将打印:

1
2
3
4
5
5

因此,它必须遍历整个流才能找出确切的大小。

关于java - 如果列表的总大小小于限制,stream().limit() 会优化执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54192244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com