gpt4 book ai didi

java - 为什么这个 lambda 不是一个单一对象?

转载 作者:行者123 更新时间:2023-12-01 18:11:50 25 4
gpt4 key购买 nike

简单地说,我尝试使用流迭代数组,以查明每个元素是否都是同一类型的对象。我已经想出了两种方法来做到这一点( foo 是一个字节数组 byte[] )。

Arrays.asList(foo).parallelStream().allMatch(aByte -> aByte == Byte.MIN_VALUE);

Stream.of(foo).parallel().allMatch(aByte -> aByte == Byte.MIN_VALUE);

但是,我不断收到错误 "Incompatible operand types byte[] and byte" 。这意味着 aByte类型为byte[] 。这是为什么?为什么它不只是正常的byte ?我该如何解决这个问题?

最佳答案

如果 foo 的类型为 byte[],则 Arrays.asList(foo) 将返回包含单个元素的列表:foo.

它将返回一个包含 foo 的所有元素的列表,因为 foo 是一个对象数组。但事实并非如此,因为 byte 是原始类型,而不是对象。因此 byte[] 不是 Object[]。

实际上您应该使用的是IntStream。请参阅What is the best way to convert a byte array to an IntStream?了解如何将字节数组转换为 IntStream。

请注意,使用并行流来完成如此简单的任务并不是一个好主意。除非字节数组非常大并且仅包含 Byte.MIN_VALUE,否则并行流相对于顺序流的开销会使速度变慢。

关于java - 为什么这个 lambda 不是一个单一对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32405665/

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