将字节数组转换为Byte列表

43

我可以想到以下几点:

  1. Arrays.asList(byte[])byte[] 转换为 List<byte[]>,
  2. 循环遍历字节数组并将每个元素添加到列表中。

我只是想知道是否有任何库函数可以实现这个功能?


1
Arrays.asList 不是一个“库函数”吗? - vitaut
8
重点是Arrays.asList在这里做了错误的事情。 - Jon Skeet
我的格式出了一些问题,它将其转换为List<byte[]>而不是List<Byte>。 - Eternal Noob
1
在我看来,byte[] 通常用于低级数据传输,例如磁盘/网络。在这样的代码中,您永远不会使用 List<Byte>,因为它使用更多的内存,并且对于这些任务没有提供有用的功能。List<Byte> 对于您可能有用,但它并不常见。 - Peter Lawrey
晚了点,但我认为这一点被忽略了。在java.util.Arrays.asList(T... a)中,这里的T... a与byte[]或Byte[]不同,因此任何数组,比如T[],将被视为类型为T[]的单个值,而不是类型为T的多个值。 - Srinath Ganesh
显示剩余2条评论
6个回答

20

图书馆 Apache Commons Lang 有一个 ArrayUtils.toObject 方法,可以将原始数组转换为类型化对象数组:

int array[] = { 1, 2, 3 };
List<Integer> list = Arrays.asList(ArrayUtils.toObject(array));

1
对于上面的答案: 如果 bytes 是一个 byte 数组 (byte[] bytes),你可以这样操作:List<Byte> byteList = Arrays.asList(ArrayUtils.toObject(bytes)); - jpmottin

19

正如这篇帖子所建议的那样:可以使用guava Bytes类来帮助解决问题:

byte[] bytes = ...
List<Byte> byteList = Bytes.asList(bytes);

17

如果使用Byte[]而不是byte[],则可以这样使用:

  Byte[] array = ....
  List<Byte> list = Arrays.asList(array);

9
无法将 List<byte[]> 转换为 List<Byte>。 - Eternal Noob
是的,你说得对。它只能使用Byte[]。我修改了答案。 - chkal
3
可以的,你可以将 byte[] 转换成 Byte[]。 - Eternal Noob
1
请参见:https://dev59.com/b2865IYBdhLWcg3whfBf - chkal
此解决方案假定您的数组是对象Byte,而不是原始byte - IgorGanapolsky

3

将Java 8中一行代码的byte[]转换为List<Byte>,输入参数为array:

List<Byte> list = IntStream.range(0, array.length).mapToObj(i -> array[i]).collect(Collectors.toList());

1

我认为最简单的纯Java方式,不需要额外的库,就是这样:

private static List<Byte> convertBytesToList(byte[] bytes) {
    final List<Byte> list = new ArrayList<>();
    for (byte b : bytes) {
        list.add(b);
    }
    return list;
}

但最好再检查一遍,确认您是否真的需要将 byte 转换为 Byte


https://dev59.com/b2865IYBdhLWcg3whfBf 包含了一些有趣的 Java 8 方法。 - Hans-Peter Störr

0
byte[] byteArray;
List<Byte> medianList=new ArrayList<>(); 
int median=0,count=0;
Path file=Paths.get("velocities.txt");
if(Files.exists(file)){
    byteArray=Files.readAllBytes(file);
}
medianList.addAll(Arrays.asList(byteArray));

无法工作,因为您已经用Byte声明了列表,而您正在尝试添加byte。 - Stoica Mircea

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接