Java 为什么不是';这不是一个奇异的物体吗?

Java 为什么不是';这不是一个奇异的物体吗?,java,arrays,lambda,java-8,java-stream,Java,Arrays,Lambda,Java 8,Java Stream,简单地说,我尝试使用流遍历数组,以确定每个元素是否都是相同类型的对象。我找到了两种方法(foo是一个字节数组byte[]) 及 但是,我不断收到错误“不兼容的操作数类型byte[]和byte”。这意味着aByte属于byte[]类型。为什么呢?为什么它不仅仅是一个普通的字节?如果foo类型为byte[],那么数组。asList(foo)将返回一个包含单个元素的列表:foo 它将返回一个包含foois-foo-was对象数组的所有元素的列表。但事实并非如此,因为字节是一种基本类型,而不是对象。因此

简单地说,我尝试使用流遍历数组,以确定每个元素是否都是相同类型的对象。我找到了两种方法(
foo
是一个字节数组
byte[]


但是,我不断收到错误
“不兼容的操作数类型byte[]和byte”
。这意味着
aByte
属于
byte[]
类型。为什么呢?为什么它不仅仅是一个普通的
字节
?如果
foo
类型为
byte[]
,那么
数组。asList(foo)
将返回一个包含单个元素的列表:
foo

它将返回一个包含
foo
is-foo-was对象数组的所有元素的列表。但事实并非如此,因为字节是一种基本类型,而不是对象。因此字节[]不是对象[]

实际上,您应该使用的是
IntStream
。有关如何将字节数组转换为IntStream的信息,请参见


请注意,对于这样一个简单的任务,使用并行流不是一个好主意。除非字节数组非常大并且只包含byte.MIN_值,否则并行流相对于顺序流的开销会使事情变慢。

如果
foo
类型为
byte[]
,那么
数组。asList(foo)
将返回一个包含单个元素的列表:
foo

它将返回一个包含
foo
is-foo-was对象数组的所有元素的列表。但事实并非如此,因为字节是一种基本类型,而不是对象。因此字节[]不是对象[]

实际上,您应该使用的是
IntStream
。有关如何将字节数组转换为IntStream的信息,请参见


请注意,对于这样一个简单的任务,使用并行流不是一个好主意。除非字节数组非常大并且只包含byte.MIN_值,否则并行流比顺序流的开销会使事情变慢。

他们有
IntStream.of(int…)
,但没有
ByteStream
:)…将
foo
转换为
字节[]
。他们有
IntStream.of(int…)
,但是没有
ByteStream
:)…将
foo
转换为
字节[]
Arrays.asList(foo).parallelStream().allMatch(aByte -> aByte == Byte.MIN_VALUE);
Stream.of(foo).parallel().allMatch(aByte -> aByte == Byte.MIN_VALUE);