gpt4 book ai didi

java - 将字节数组转换为 IntStream 的最佳方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 23:02:11 24 4
gpt4 key购买 nike

Java 8 有 java.util.stream.Stream 和 java.util.stream.IntStream 类型。 java.util.Arrays 有一个方法

IntStream is = Arrays.stream(int[])

但没有这样的方法从 byte[]、short[] 或 char[] 生成 IntStream,将每个元素扩展为 int。是否有一种惯用的/首选的方法来从 byte[] 创建 IntStream,以便我可以以函数方式对字节数组进行操作?

我当然可以简单地将 byte[] 手动转换为 int[] 并使用 Arrays.stream(int[]),或使用 IntStream.Builder:

public static IntStream stream(byte[] bytes) {
IntStream.Builder isb = IntStream.builder();
for (byte b: bytes)
isb.add((int) b);
return isb.build();
}

但由于源代码的复制,两者都不是很实用。

似乎也没有将 InputStream(或在本例中为 ByteArrayInputStream)转换为 IntStream 的简单方法,这对于处理 InputStream 的功能非常有用。 (明显遗漏?)

有没有更实用的方式,既高效又不抄袭?

最佳答案

 byte[] bytes = {2, 6, -2, 1, 7};
IntStream is = IntStream.range(0, bytes.length).map(i -> bytes[i]);

ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);
IntStream is2 = IntStream.generate(inputStream::read).limit(inputStream.available());

关于java - 将字节数组转换为 IntStream 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27810251/

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