2014-01-19 39 views
-1

我正在嘗試學習Java,同時玩弄它,並且我的一個朋友聲稱可以從數組中刪除元素,只需幾行,而無需導入任何內容從java中的數組中刪除元素,無需導入

我一直在喋喋不休地談論如何說程序可以完成,這就是我想出的。

public void removeStudent(Student student) { 
    for (int i = 0; i < list.length; i++) { 
     if(list[i].getID() == student.getID()) { 
      for (int j = i; j < list.length; j++) { 
       int y = j; 
       list[i] = list[y++]; 
       studentsThusFar--; 
      } 
     } 
    } 

} 

我的想法是我可以通過移動一個空格後移動所有對象來移除一個Student對象。但是,如果數組中的最後一個對象是被刪除的對象,那麼這種情況不會消失嗎?

請保持您的答案精確,並使用初學者可以理解的語言。

+0

你知道數組的長度......檢查,看看左邊的元素數...是否要刪除的元素是最後一個。如果是,取出後什麼也不做。否則,從該位置(其被稱爲索引不是空格:))開始將數據移動到一個索引/單元格上...您的方法是正確的。 – TheLostMind

+0

@TheLostMind 那麼我將如何去除所述數組中的最後一個元素?在我把所有東西都搬了之後,或者發現所需的刪除是最後一個元素? – ViRALiC

回答

1

我只是將所有項目複製到一個新的數組,除了要刪除的項目。然後返回新的數組。

public void removeStudent(Student student) { 
    int[] new_list = new Student[list.length-1]; 
    int j = 0; 
    for (int i = 0; i < list.length; i++) { 
     if(list[i].getID() != student.getID()) { 
      new_list[j] = list[i]; 
      j++; 
     } 
    } 
    list = new_list; //Assuming list is some global 
} 
+0

功能,毫無疑問,但正如你所看到的,我的方法是無效的,所以我想修改一個現有的表,並不返回一個新的......不過,謝謝! – ViRALiC

+0

然後用new_list替換變量列表...更新回答 –

+0

@ Chiel92 - 你不能從數組中移除一個元素..你只需將它設置爲null(在o對象的情況下)和0爲int(在你的情況下)等等在... – TheLostMind