Java中如何将ArrayList<byte[]>转换为byte[][]二维字节数组
ArrayList<byte[]> 转 byte[][] 实现方案
你要转换的场景本身不需要处理拆箱装箱逻辑,因为ArrayList中存储的每一个元素已经是byte[]类型,直接调用List自带的toArray方法即可完成转换,不同JDK版本可选择的写法如下:
1. JDK 11+ 最简写法
直接使用toArray的函数式重载,传入二维数组的构造引用即可:
ArrayList<byte[]> list = new ArrayList<>(); // 转换逻辑 byte[][] b = list.toArray(byte[][]::new);
2. JDK 8 及更低版本通用写法
使用带类型数组参数的toArray重载,传入空的二维数组指定返回类型:
ArrayList<byte[]> list = new ArrayList<>(); // 转换逻辑 byte[][] b = list.toArray(new byte[0][]);
传入长度为0的空数组不会产生额外的性能开销,JVM会自动根据list的实际长度创建对应大小的二维数组。
注意事项
- 无需手动遍历列表逐个赋值,JDK自带的
toArray方法已经做了底层优化,执行效率和安全性都优于手动实现的遍历逻辑 - 该场景和
ArrayList<Byte>转byte[]的场景完全不同,后者需要处理包装类拆箱,而本场景下元素本身就是原生字节数组,不需要额外的元素转换操作
内容的提问来源于stack exchange,提问作者girl_in_tech
相关产品推荐
相关产品推荐

