我在使用arraycopy从数组中删除项目时遇到问题。 我有两个方法find(找到要删除的项的索引)和 删除(删除)。 它不会删除任何内容。提前谢谢。
public void find(Comparable value2){
Scanner sc = new Scanner(System.in);
Comparable value = value2;
if (empty() == true){
System.out.println("The array is empty");
}
else{
int bsValue = Arrays.binarySearch(sa,value);
System.out.println("The index is: " + bsValue);
delete(bsValue);
}
}
public void delete(int bs){
int location = bs;
Comparable[] tempArray = new Comparable[sa.length -1];
System.arraycopy(sa, 0, tempArray, 0, location);
if (sa.length != location){
System.arraycopy(sa, location +1 , tempArray, location, sa.length - location - 1);
}
}
答案 0 :(得分:2)
您分配tempArray
,将数据复制到其中,然后放弃引用。因此,原始数组(sa
)保持原样。
据推测,你的意思是让sa
指向新数组:
sa = tempArray;
答案 1 :(得分:0)
通过深度复制sa来创建tempArray的新对象,这将为您完成工作