Java 使用arraycopy从数组中删除项

Java 使用arraycopy从数组中删除项,java,arrays,Java,Arrays,使用arraycopy从阵列中删除项目时遇到问题。 我有两种方法find(查找要删除的项的索引)和find 删除(执行删除操作)。 它不会删除任何内容。先谢谢你 public void find(Comparable value2){ Scanner sc = new Scanner(System.in); Comparable value = value2; if (empty() == true){ System.out.println("The

使用arraycopy从阵列中删除项目时遇到问题。 我有两种方法find(查找要删除的项的索引)和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);
     }      
}

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

您可能想让
sa
指向新数组:

sa = tempArray;

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

注意,您不必编写
(empty()==true)
。您只需编写
(empty())
(一种更好的方式)。谢谢您,我在您第一次发表评论后更改了它。现在可以了。我一直在看这个!