我有一个字节数组,我试图擦除数组的前50个元素。我的意思是擦除,在擦除阵列后,它的大小将小于原始阵列。我有两个问题;
答案 0 :(得分:4)
您需要复制它 - 有几种方法可以执行此操作,for example:
byte[] newArray = Arrays.copyOfRange(originalArray, 50, originalArray.length);
或者,您可以使用列表并调用the subList
method来避免复制。
答案 1 :(得分:1)
数组大小不可变。您必须创建一个具有所需大小的新阵列,并复制所需的信息。您可以这样做或使用可变的arraylist。
答案 2 :(得分:1)
如果你想要效率,我建议使用ByteBuffer。这允许您创建一个大缓冲区并移动开始和结束以便稍后擦除,压缩或增大缓冲区。
答案 3 :(得分:1)
Q值。我认为通过java native方法重新调整大小数组是不可能的,我错了吗?我搜索过但我找不到。 答:您无法从Array中删除元素,但将元素的值设置为空或null。但这就是为什么还有其他有效的组合,如LinkedList,ArrayList,Vectors ..
Q值。我怎样才能以时间有效的方式做到这一点? 答:您需要两个阵列。请看下面的代码:
它的作用是以有效的方式复制第二个数组中的剩余内容
public int[] removeElement(int[] array, int del)
{
int[] result = new int[array.length - 1];
System.arraycopy(array, 0, result, 0, del);
if (array.length != del)
{
System.arraycopy(array, del + 1, result, del, array.length - del - 1);
}
return result;
}
答案 4 :(得分:0)
您无法调整阵列大小,但可以将其复制到较小的阵列中。
public int[] schrink(int[] input) {
return Arrays.copyOfRange(input, 49, input.length-50);
}