Java 如何在字节数组的开头添加空间

Java 如何在字节数组的开头添加空间,java,arrays,Java,Arrays,我有一个方法,在字节数组的开头添加空格。问题是,我不确定这是否是执行此任务最快的方法。是否有一些选项可以更快地添加空间?如果是,请在此添加一些解决方案 public static byte[] doplnMezery(byte[] item, int numberOfSpaces) { int lenghtOfItem = item.length; for (int i = lenghtOfItem; i < numberOfSpaces; i++) {

我有一个方法,在字节数组的开头添加空格。问题是,我不确定这是否是执行此任务最快的方法。是否有一些选项可以更快地添加空间?如果是,请在此添加一些解决方案

public static byte[] doplnMezery(byte[] item, int numberOfSpaces) {
    int lenghtOfItem = item.length;

    for (int i = lenghtOfItem; i < numberOfSpaces; i++) {
        item = ArrayUtils.add(item, 0, (byte) 32);
    }
    return item;
}
公共静态字节[]doplnMezery(字节[]项,int numberOfSpaces){
int lenghtOfItem=项目长度;
for(int i=lenghtOfItem;i
这似乎效率低下,因为
add
方法的运行速度不能超过线性时间。这里得到的是一个二次算法

像这样的东西应该更快(线性时间复杂度)


这似乎效率低下,因为
add
方法的运行速度不能超过线性时间。这里得到的是一个二次算法

像这样的东西应该更快(线性时间复杂度)

尝试此代码(JUnit测试)-它向
生成
items2
数组添加7个空格:

@Test
public void test1() throws Exception
{
    byte[] items = new byte[] { 0x01, 0x02, 0x03 };
    byte[] items2 = new byte[3 + 7];

    System.arraycopy(items, 0, items2, 7, items.length);
    Arrays.fill(items2, 0, 7, (byte)' ');

    assertArrayEquals(new byte[] { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x01, 0x02, 0x03 } , items2);
}
尝试此代码(JUnit测试)-它向
生成
items2
数组添加7个空格:

@Test
public void test1() throws Exception
{
    byte[] items = new byte[] { 0x01, 0x02, 0x03 };
    byte[] items2 = new byte[3 + 7];

    System.arraycopy(items, 0, items2, 7, items.length);
    Arrays.fill(items2, 0, 7, (byte)' ');

    assertArrayEquals(new byte[] { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x01, 0x02, 0x03 } , items2);
}

二进制数据通常用
\0
代替空格填充。这个数组包含文本吗?通常,做某事的最快方法是完全避免做。您不能在将数组传递到的任何对象中添加空格吗?是的,我知道0是常见的,但在需求中是空格,因此我需要添加空格。通常,二进制数据用
\0
而不是空格填充。这个数组包含文本吗?通常,做某事的最快方法是完全避免做。能否在将数组传递到的对象中添加空格?是的,我知道0是常见的,但在要求中是空格,因此我需要添加空格