普通终端操作是否不适用于Stream<;java.lang.Byte>;?
我有一个简单的普通终端操作是否不适用于Stream<;java.lang.Byte>;?,java,byte,java-8,java-stream,Java,Byte,Java 8,Java Stream,我有一个简单的流,用于处理字节: List<Byte> byteList = Arrays.stream(new Byte[]{0x1, 0x2, 0x3, 0x4}) .map(b -> b >> 1) .collect(Collectors.toList()); 错误:不兼容的类型:java.util.Optional无法转换为java.util.Optional 我没有找到任何说明流不支持字节的文档。任何指针?b>>1返回一个
流
,用于处理字节:
List<Byte> byteList = Arrays.stream(new Byte[]{0x1, 0x2, 0x3, 0x4})
.map(b -> b >> 1)
.collect(Collectors.toList());
错误:不兼容的类型:java.util.Optional
无法转换为java.util.Optional
我没有找到任何说明流不支持
字节的文档。任何指针?b>>1
返回一个不能自动转换为字节的整数。您只需添加一个强制类型:
.map(b -> (byte) (b >> 1))
谢谢出于某种原因,Intellij IDEA一直告诉我映射是一个从字节到字节的操作…确实如此,但是您的实现返回了一个INT。尽管如此,如果您现在是这样,您也可以使用IntStream.of(0x1,0x2,0x3,0x4)。mapToObj(b-> (字节)(b>>1)).collect(collector.toList())代码>因为没有真正的理由将字节
对象作为源…
.map(b -> (byte) (b >> 1))