使用arraycopy从数组中删除项目

时间:2013-04-18 05:07:52

标签: java arrays

我在使用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);
     }      
}

2 个答案:

答案 0 :(得分:2)

您分配tempArray,将数据复制到其中,然后放弃引用。因此,原始数组(sa)保持原样。

据推测,你的意思是让sa指向新数组:

sa = tempArray;

答案 1 :(得分:0)

通过深度复制sa来创建tempArray的新对象,这将为您完成工作