Java 流:限制不适用于排序
Java stream: limit doesnt work with sorted
我有以下代码:
new Random().ints()
.map(i -> i / 2)
.limit(100)
.toArray()
...它按预期工作。
但这行不通:
new Random().ints()
.sorted()
.map(i -> i / 2)
.limit(100)
.toArray()
它抛出:
Exception in thread "main" java.lang.IllegalArgumentException: Stream size exceeds max array size
不应限制流的短路并帮助将其限制为 100 个元素?
调用new Random().ints()
returns无限的伪随机数流。当您对其进行排序时,它在内部使用一个数组。然而,数组的最大尺寸显然小于∞。要解决此问题,请使用 limit
并首先使您的流有限,然后执行排序。事实上,这优化了流处理管道,因为您只对必要的元素进行排序。这是它的样子。
new Random().ints()
.map(i -> i / 2)
.limit(100)
.sorted()
.toArray();
我有以下代码:
new Random().ints()
.map(i -> i / 2)
.limit(100)
.toArray()
...它按预期工作。
但这行不通:
new Random().ints()
.sorted()
.map(i -> i / 2)
.limit(100)
.toArray()
它抛出:
Exception in thread "main" java.lang.IllegalArgumentException: Stream size exceeds max array size
不应限制流的短路并帮助将其限制为 100 个元素?
调用new Random().ints()
returns无限的伪随机数流。当您对其进行排序时,它在内部使用一个数组。然而,数组的最大尺寸显然小于∞。要解决此问题,请使用 limit
并首先使您的流有限,然后执行排序。事实上,这优化了流处理管道,因为您只对必要的元素进行排序。这是它的样子。
new Random().ints()
.map(i -> i / 2)
.limit(100)
.sorted()
.toArray();