2010-08-01 39 views
1

我有一個簡單的程序,可讓您通過將數據存儲在數組中來添加,編輯,列出,搜索和刪除記錄。如何正確刪除java數組中的元素

我現在的問題,是如何正確地刪除其項目。這是我目前的代碼。

System.out.print("Input number to delete: "); 
        delnum=scanz.nextLine(); 
        intdelnum=Integer.parseInt(delnum); 

name[intdelnum]=null; 
          course[intdelnum]=null; 
          gender[intdelnum]=null; 
          school[intdelnum]=null; 

正如你所看到的,如果我列出每個包含10個元素的數組。我設置爲null的數組索引將永遠保留爲null。我無法在其上添加任何內容。 你知道如何做到這一點的更好方法。所以當我刪除索引2處的數組元素時,索引3處的元素將會增加。索引2?所以後來我仍然可以在我設置爲null的索引上添加一個元素。

+0

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

回答

1

我會用這一個ArrayList

它可以讓您輕鬆地從你的列表中刪除項目,換擋每一個項目背後下來

ArrayList<String> myArrayList; 

/*... initialization and filling in of your data ...*/ 

myArrayList.remove(index); 

對於全參考here是1.5.0 API頁ArrayList

6

您可以通過移周圍數組內容做手工,或使用陣列複製調用,比如System.arraycopy,但你幾乎可以肯定要使用一個集合,而不是。 ArrayList是一個可變數組的不錯選擇。 ArrayList.remove會讓你的索引中刪除:

​​

關於您的代碼段其他一些散記:

我假設scanz是掃描儀。您可以撥打nextInt()而不是使用nextLine()並將String轉換爲int。

您也可能想使保存所有這些信息一類,而不是使用四個平行陣列跟蹤它:

class Student { 
    enum Gender {MALE, FEMALE} 

    private String name; 
    private Course course; // This can be a String if that's simpler for your project 
    private Gender gender; 
    private School school; // See note for 'course' 
} 

ArrayList<Student> students; 
1

一旦創建,即不能調整陣列。
可以從陣列創建列表像Arrays.asList(),使用remove()刪除你不想要的元素,然後用toArray()取回從列表中的數組。

1

可以編寫的方法(刪除操作碼),以圍繞移動數組值。

一樣,如果在X元素被刪除方法將如下所示:

private void deleteElement(int del_idx){ 
    if(del_idx <= org_arr.length){ 
     org_arr[del_idx]=null; 
     for(int i = del_idx;i < (org_arr.length-1); i++){ 
      if(org_arr[i+1] != null){ 
       org_arr[i] = org_arr[i+1]; 
      } 
     } 
    } 
} 

但它會更適合於使用ArrayList而不是數組,你的情況。