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

时间:2012-05-28 06:44:47

标签: java arrays

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

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;
}

2 个答案:

答案 0 :(得分:4)

这似乎效率低下,因为add方法的运行速度不能快于线性时间。你得到的是二次算法。

这样的事情应该更快(线性时间复杂度)。

public static byte[] doplnMezery(byte[] item, int numberOfSpaces) {
    byte[] result = new byte[item.length + numberOfSpaces];
    Arrays.fill(result, 0, numberOfSpaces, (byte) 32);
    System.arraycopy(item, 0, result, numberOfSpaces, item.length);        
    return result;
}

答案 1 :(得分:1)

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

@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);
}