You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何将自带toByteArray方法的对象数组转换为byte[]数组

你原始的写法得到的是byte[][]二维数组,每个元素对应原对象的字节数组,无法直接得到目标一维字节数组。最简单的实现方式如下:

方案1:标准库循环拼接(优先推荐)

无需引入第三方依赖,写法简单可读性高,性能也最优:

import java.io.ByteArrayOutputStream;

// 核心逻辑
ByteArrayOutputStream baos = new ByteArrayOutputStream();
for (Foo foo : fooArray) {
    baos.write(foo.toByteArray());
}
byte[] fullByteArray = baos.toByteArray();

注:ByteArrayOutputStream的write方法本身不需要处理IO异常,关闭方法也为空实现,不需要额外加try-with-resources或者异常捕获逻辑。

方案2:Stream流式写法

如果你的项目要求统一用流式编码,可以用如下实现:

import java.util.Arrays;
import java.io.ByteArrayOutputStream;

byte[] fullByteArray = Arrays.stream(fooArray)
    .map(foo -> foo.toByteArray())
    .collect(
        ByteArrayOutputStream::new,
        (baos, bytes) -> baos.writeBytes(bytes),
        (baos1, baos2) -> baos1.writeBytes(baos2.toByteArray())
    )
    .toByteArray();

如果允许使用Guava等工具库,还可以用Bytes.concat()方法直接拼接所有字节数组,写法会更简洁。

内容的提问来源于stack exchange,提问作者MKue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 09:18:03