我正在尝试将字节数组转换为LinkedList<Byte>
:
//data is of type byte[]
List<Byte> list = Arrays.stream(toObjects(data)).boxed().collect(Collectors.toList());
Byte[] toObjects(byte[] bytesPrim) {
Byte[] bytes = new Byte[bytesPrim.length];
Arrays.setAll(bytes, n -> bytesPrim[n]);
return bytes;
}
第一行引发一条错误消息:
方法
boxed()
未定义类型Stream<Byte>
。
我知道为什么会收到此错误消息以及如何解决此问题?
答案 0 :(得分:5)
方法boxed()
仅适用于某些原始类型(IntStream
,DoubleStream
和LongStream
)的流,以将流的每个原始值框中到相应的包装类(Integer
,Double
和Long
分别)。
表达式Arrays.stream(toObjects(data))
会返回Stream<Byte>
,该String sqlSearchByProduct = " SELECT ID, pID,pGroupID, pName, pPrice, Status, Stock FROM productsTable WHERE (pGroupID= ProductGroupIDDropDownList.SelectedItem.Value)";
sqlDataSource.SelectCommand = sqlSearchByProduct ;
自there is no such thing as a ByteStream
class以来已经装箱。
答案 1 :(得分:0)
首先,您不需要boxed()
方法 - 您已经在toObjects()
中自行完成,并将其转换为Byte
。
其次,没有这样的字节方法。它存在于int,double,但不是字节。见here
答案 2 :(得分:0)
根据您要执行的操作,您可以直接使用Arrays.asList(toObjects(data))
,因为toObjects(data)
的类型为Byte[]
。
或者,如果你真的想使用Streams,那么Stream.of(toObjects(data)).collect(Collectors.toList())
应该可以做到这一点。