使用Java中的流的byte []到byte []的ArrayList

dan*_*000 2 java java-stream

我有一个byte []的ArrayList,我想知道是否可以使用Java*中的流将其转换为byte [].ArrayList中的所有数组都具有相同的大小.

ArrayList<byte[]> buffer = new ArrayList();

byte[] output = buffer.stream(...)
Run Code Online (Sandbox Code Playgroud)

sak*_*029 10

试试这个.

List<byte[]> list = Arrays.asList("abc".getBytes(), "def".getBytes());
byte[] result = list.stream()
    .collect(
        () -> new ByteArrayOutputStream(),
        (b, e) -> {
            try {
                b.write(e);
            } catch (IOException e1) {
                throw new RuntimeException(e1);
            }
        },
        (a, b) -> {}).toByteArray();
System.out.println(new String(result));
// -> abcdef
Run Code Online (Sandbox Code Playgroud)

  • 当你使用 `b.write(e, 0, e.length)` 时,你不需要处理 `IOException`,所以整个 lambda 表达式简化为 `(b, e) -&gt; b.write(e) , 0, e.length)`。此外,我只能秒@user167019,不要编写损坏的组合器函数。特别是当有一个简单的直接实现时,比如 `b.writeTo(a)`。 (3认同)
  • 为什么组合器是空操作?`b.writeTo(a);` 就足够了。 (2认同)