java 如何删除数组的第一个元素,并且整体向前移动~~~~

java 如何删除数组的第一个元素,并且整体向前移动~~~~~~~~~~~~~~~

6个回答

String[] str = "a,b,c,d,e,f,g,h,j,k".split(",");
String[] ss = new String[str.length-1];
System.arraycopy(str, 1, ss, 0, ss.length);
System.out.println(Arrays.toString(ss));

public static void deleteMemberFromArray(Object[] arr, int index)//index为要删除元素的位置
{
if (index < 0 || index >= arr.length)
{
throw new IllegalArgumentException(String.format(
"The index is out of range"));
}
else
{
for(int i = index+1; i<arr.length; i++)
{
arr[i-1] = arr[i];
}
}
}

常规定义上的数组 (e.g. int[] )长度是不可变的,如果需要改变的话 需要重新申请一块数组空间。 如果通过可变数组来实现(e.g. arraylist)
内部也是低效的位移操作。 考虑一下你的业务需求,如果没有要求 就直接申请空间 拷贝一下数据,释放原来的数据,否则的话 改用链表
会好一些

可以直接看下ArrayList的remove方法的源码。
图片说明

 public class Test {
    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3, 4, 5, 6};
        printArr(arr);
        arr = deleteFirst(arr);
        printArr(arr);
    }

    static void printArr(int[] arr) {
        for (int i : arr) {
            System.out.print(i + " ");
        }
        System.out.println();
    }

    static int[] deleteFirst(int[] arr) {
        int[] temp = new int[arr.length - 1];
        System.arraycopy(arr, 1, temp, 0, temp.length);
        return temp;
    }
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问