2011-05-09 60 views
5

刪除元素我有例如一個數組:如何從一個數組

String [][] test = {{"a","1"}, 
        {"b","1"}, 
        {"c","1"}}; 

誰能告訴我如何從數組中刪除元素。例如,我想刪除項目「b」,以便陣列看起來像:

{{"a","1"}, 
{"c","1"}} 

我找不到一種方法。什麼到目前爲止,我發現這裏是不是爲我工作:(

+0

您更好的使用而不是數組的'ArrayList'。的 – Behrang 2011-05-09 10:00:32

+0

可能重複[我如何從Java中的數組中刪除對象?(http://stackoverflow.com/questions/112503/how-do-i-remove-objects-from-an-array-in-java) – McDowell 2011-05-09 10:19:01

+0

沒有....這不是重複。 – Peter 2011-05-09 11:00:36

回答

10

您不能從陣列中移除元素。 Java數組的大小在分配數組時確定,並且不能更改。您可以做的最好的是:

  • null賦值給相關位置的數組;例如

    test[1] = null; 
    

    這留給你處理的數組,其中null值在「洞」的問題。 (在某些情況下,這是沒有問題的......但在大多數情況下,它是。)

  • 創建刪除的元素的新數組;例如

    String[][] tmp = new String[test.length - 1][]; 
    int j = 0; 
    for (int i = 0; i < test.length; i++) { 
        if (i != indexOfItemToRemove) { 
         tmp[j++] = test[i]; 
        } 
    } 
    test = tmp; 
    

    阿帕奇共享ArrayUtils類有一些靜態方法,會更加整齊做到這一點(如Object[] ArrayUtils.remove(Object[], int),但事實是,這種方法創建一個新的數組對象。

更好的方法應該使用合適的Collection類型,例如,ArrayList類型有一個方法,允許您刪除給定位置上的元素

6

沒有內置的方式,從一個普通的Java數組「刪除」項。

要使用什麼是ArrayList

2

您可以將數組中的條目設置爲nulltest[0][1] = null;)。但是,「刪除」該項目以使該數組的元素少於之前的元素不能重新創建數組。數據結構定期爲ArrayList(或根據您的需要另一個集合類)可能更方便。

0

我的解決方案是:

你不能從一個數組=>這是正確的刪除元素,但我們可以做一些事情來改變當前的陣列。

No need assign null to the array at the relevant position; e.g. 

test[1] = null; 

Create a new array with the element removed; e.g. 

String[][] temp = new String[test.length - 1][]; 

需要以字符串獲得指數/陣列刪除:IndexToRemove

for (int i = 0; i < test.length-1; i++) { 
       if (i<IndexToRemove){ 
        temp[i]=test[i]; 
       }else if (i==IndexToRemove){ 
        temp[i]=test[i+1]; 
       }else { 
        temp[i]=test[i+1]; 
       } 
} 
test = temp; 

希望它有幫助!