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());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)