2016-02-29 27 views
0

刪除ArrayList的元素,我不知道這是一個duplicat或沒有(這大概是),但我無法找到我要找的。的Java/Eclipse中:在指定索引

我有一個構造函數在類中創建一個靜態的ArrayList持物,或任何一類擴展它:

public static ArrayList<Person> PersonList = new ArrayList<>(); 

public Constructor(....){ 
    PersonList.add(this); 
} 

現在,我嘗試使用索引來刪除此ArrayList的對象,但我m得到ArrayIndexOutOfBounds: Array index out of range:(索引)。

現在我知道這個錯誤是告訴我沒有在指定位置沒有元素,但我不明白爲什麼PersonList.size()返回4(如果有列表中的4種元素)。

我是新來的Java,所以我希望這裏有人能幫助我。下面的代碼:

list.addMouseListener(new MouseAdapter() { 
    @Override 
    public void mousePressed(MouseEvent arg0) { 
    if(SwingUtilities.isRightMouseButton(arg0)) { 
     try { 
     Person.PersonList.remove(list.getSelectedIndex()); 
     list.remove(list.getSelectedIndex()); 
     }catch (Exception e) { 
      System.out.println(e); 
     } 
     System.out.println("Index: " + list.getSelectedIndex()); 
     updateData(); 
    } 
    } 
}); 
+0

你試圖訪問什麼索引? – resueman

+0

@resueman list是PersonList的一個JList,我試圖在一次點擊該對象的時候刪除它們。我試圖獲取用戶選擇的JList行的索引並刪除該行的PersonList記錄。不知道這是否有道理。 –

+1

哪一行是拋出錯誤? 'Person.PersonList.remove'或'list.remove'?當你調試索引時,它是你想要的正確索引嗎? –

回答

0

我很困惑這個:

public Constructor(....){ 
    PersonList.add(this); 
} 

看起來每次你創建一個類(一個人我假設)要添加它的一個新對象時到一個類變量列表。我假設每次創建該類的新實例時,都會重置全局列表。你能否確認PersonList並不總是size = 1?我懷疑它,所以移動該列表不同的類

+0

是的,我證實了尺寸增加(和減少,謝謝)。我會給你解決,感謝所有的幫助和有用的信息。 –

0

好了,測試一點現在看來,這只是罰款畢竟以後。它會拋出一個錯誤告訴我它的界限,但在每次刪除後更新.size()後,它會減少。

雖然我不知道爲什麼它的工作原理,如果它告訴我它不?

+0

我不認爲有足夠的信息來回答這個問題。就我個人而言,我認爲在這個類中有一個'Person'對象的'List'不是個好主意。我會從裝飾類中刪除該列表,並將其保存在您訪問的類中 –

+0

@Ryan Sayles我這樣做是因爲這是我大學任務的一部分,但我想這是個好主意。 –

相關問題