删除数组中的元素

时间:2013-04-08 08:08:40

标签: java elements

这是我对这个问题的尝试,我如何将0移动到数组的末尾?我尝试用结束元素交换0元素,那不是它......

public void removeMiddle()  {
    int pos = values.length/2;
    int n = values.length
    if (n%2 == 0)  {
        int fMid = pos - 1;
        values[pos] = 0;
        values fMid = 0;
    } else  {
        int j = n-1;
        int k = j/2;
        int l = k+1;
        int m = n-l;
        values[m] = 0;
    }
}

Array  =  {5, 2, 7, 9, 1, 3, 2, 4}
result =  [5, 2, 7, 0, 0, 3, 2, 4]
Expected: [5, 2, 7, 3, 2, 4, 0, 0]

Array  =  {5, 2, 7, 9, 1, 3, 2}
result =  [5, 2, 7, 0, 1, 3, 2]
Expected: [5, 2, 7, 1, 3, 2, 0]

5 个答案:

答案 0 :(得分:1)

提示:使用System.arraycopy(),然后将最后一个元素设置为零。

或者,使用循环。

答案 1 :(得分:1)

将数组转换为List,删除零,将它们添加回来,然后将列表转换回数组。

答案 2 :(得分:0)

试试这个:我认为它易于理解和实施。

public static void main(String[] args) {
    int[] arr = { 5, 0, 7, 9, 1, 3, 0 };
    int index = 0;
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] != 0) {
            arr[index++] = arr[i];
        }

    }

    Arrays.fill(arr, index, arr.length, 0);
    System.out.println(Arrays.toString(arr));
}

输入:

{ 5, 0, 7, 9, 1, 3, 0 }

输出:

[5, 7, 9, 1, 3, 0, 0]

答案 3 :(得分:0)

也许您可以使用LinkedList结构并在其开头添加数组的所有非0元素,并在结尾添加所有0。

    //initial array
    Integer[] array ={1,2,5,8,0,9,10};

    //converted array to List
    ArrayList<Integer> inputList= new ArrayList<Integer>(Arrays.asList(array));

    //secondary list 
    LinkedList<Integer> outputList = new <Integer>LinkedList();


    for(Integer x:inputList){
        int val= Integer.parseInt(x.toString());
        if(val !=0){
            //add non 0 values at the start
            outputList.addFirst(x);
        }else{
            //add 0's at the end
            outputList.addLast(x);
        }
    }

    //convert back to array
    Integer[] outputArray = new Integer[outputList.size()];
    outputArray = outputList.toArray(outputArray);

答案 4 :(得分:0)

如前所述,你可以将数组转换为List,删除零,将它们添加回来,然后将列表转换回数组,或者如果你想从头开始,你知道数组的长度,那么只需要创建一个数组(比如说) array1)并扫描原始数组(比如数组)直到数组结束。 如果数组包含非零数字,则将其插入数组(array1)。完成扫描后,只需将零添加到剩余的数组索引中。

希望这可能会对你有所帮助。