簡體   English   中英

刪除數組元素后如何移位?

[英]How to shift array elements after removing one?

我只需要在循環中添加平移函數(這意味着我不能使用任何ListArray方法或類似方法,因此這不是這些方法的任何其他問題的副本。)到此方法中,該方法從給定的值中刪除特定的整數數組,然后將結果放入另一個數組,然后將其返回。

public static int[] removeInt(int v, int[] in) {

    int length = 0;
    length = in.length;
    int[] toReturn = new int[length];

    for (int b = 0; b < length; b++) {
        toReturn[b] = 0;
    }

    for (int i = 0; i < length; i++) {
        if (in[i] != v) {
            toReturn[i] = in[i];
        }
    }

    return toReturn;
}

如果數組的輸入為{1、2、3、4、5},要刪除的數字為{2},則輸出將為{1 0 3 4 5},但必須為{1 3 4 5},我找不到將數字向左移動的方法。

“ v”來自主要的用戶輸入。 與“ in”相同,由用戶之前填寫。

您是否考慮過使用LinkedList 這在內部管理數組,因此您無需自己移動元素。 您可以只調用remove()

您將必須遍歷兩次數組:第一次,您計算v在in包含的頻率。 如果count為0,則可以返回,否則必須創建一個長度為in.length - count的新數組。 話又說回來,你必須遍歷in ,並添加每個值不是V到您的陣列。

int count = 0;

    for(int i: in) {
        if (i==v) {
            count++;
        }
    }

    int[] result = new int[in.length-count];
    int pos=0;
    for(int i: in) {
        if (i!=v) {
            result[pos] = i;
            pos++;
        }
    }

但是您可以使用Collections使其更容易:

public static void main(String[] args) {
    int v = 2;
    int[] in = new int[]{1, 2, 3, 4, 5};

    List<Integer> list = new ArrayList<>();
    for(int i: in) {
        if (i!=v) {
            list.add(i);
        }
    }

    Integer[] result = list.toArray(new Integer[]{});
}

但是,這樣做的缺點是您擁有一個整數數組而不是一個整數數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM