JS push,concat,unshift的java等价物是什么?

时间:2014-02-13 19:56:12

标签: java javascript

我正在尝试将以下JS转换为Java

serializeSig:function(r,s){
var rBa=r.toByteArraySigned();
var sBa=s.toByteArraySigned();
var sequence=[];
sequence.push(2);
sequence.push(rBa.length);
sequence=sequence.concat(rBa);
sequence.push(2);
sequence.push(sBa.length);
sequence=sequence.concat(sBa);
sequence.unshift(sequence.length);
sequence.unshift(48);
return sequence
}

我认为push会转换为add,与某种addAll相关联,但unshift是什么?我的变量在java中的类型是什么?

3 个答案:

答案 0 :(得分:4)

myArray.unshift(obj)对应myList.add(0, obj)

Java中的字节数组是byte[]。字节数组列表为List<byte[]>。 (那是java.util.List,而不是java.awt.List,以防您导入错误。)

编辑:看起来你正在尝试创建一个字节数组,而不是字节数组列表。在这种情况下,您应该使用java.nio.ByteBuffer,或者可能使用java.io.ByteArrayOutputStream。后者必须按顺序编写 - 你不能相当于unshift

答案 1 :(得分:3)

看起来您正在尝试使用ByteBuffer来序列化某些数据。

 public static void serialize(ByteBuffer bb, String r, String s) {
      bb.put(48);
      int start = bb.position();
      bb.put(0); // padding.
      bb.put(2);
      byte[] rBa = r.getBytes();
      bb.put((byte) rBa.length);
      bb.put(rBa);
      byte[] sBa = s.getBytes();
      bb.put((byte) sBa.length);
      bb.put(sBa);
      bb.put(start, (byte) (bb.position() - start - 1));
}

使用List<Byte>效率非常低,并且不支持执行IO的程序包。

答案 2 :(得分:1)

你可以使用Bytes的arraylist。

ArrayList<Byte> sequence = new ArrayList<Byte>;

要添加到arraylist的末尾使用:

sequence.add(item);

添加到正面使用:

sequence.add(0, item);