从List <byte> </byte>获取byte []

时间:2011-02-01 11:24:28

标签: java

  

可能重复:
  Creating a byte[] from a List<Byte>

我有列表清单。如何从startIndex到endIndex id list获取byte [](列表的子数组)?

4 个答案:

答案 0 :(得分:2)

List<Byte> theList= new ArrayList<Byte>();
Byte[] your_bytes = theList.subList(startIndex,endIndex).toArray(new Byte[0]);

如果最后你需要使用byte(原语),那么我推荐Apache Commons Collections toPrimitive utility

byte[] your_primitive_bytes = ArrayUtils.toPrimitive(your_bytes);

对于大多数情况,您当然可以使用Byte(对象)。

答案 1 :(得分:0)

ArrayList<Byte> list = new ArrayList<Byte>();

ArrayList<Byte> subList = (ArrayList<Byte>) list.subList(fromIndex, toIndex); //(0,5)

Byte[] array = (Byte[]) subList.toArray();

答案 2 :(得分:0)

好吧,因为原来的问题实际上是要求包含byte [](不是Byte [])的子列表,所以:

    List<Byte> byteList = .... some pre-populated list
    int start = 5;
    int end = 10;
    byte[] bytes = new byte[end-start]; // OP explicitly asks for byte[] (unless it's a typo)
    for (int i = start; i < end; i++) {
        bytes[i-start] = byteList.get(i).byteValue();
    }

答案 3 :(得分:0)

如果您需要byte[]

byte[] byteArray = ArrayUtils.toPrimitive(list.subList(startIndex, endIndex).toArray(new Byte[0]));

ArrayUtils.toPrimitive