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是常见的,但在要求中是空格,因此我需要添加空格