2015-01-16 34 views
0
private static void printInvoice() { 

    for (int i = customerList.size()-1; i >= 0; i--) { 
     for(int n = taskChecker.size() -1; n >=0 ; i--){ 
     System.out.println(customerList.get(i).getName()); 
     customerList.get(i).invoiceForCustomer(); 
     taskChecker.remove(n);  

    } 
} 

該如何刪除元素是什麼得到打印出來:從ArrayList中

Sven 9900 Task: Rosta knäck Date: 2014-02-11 Numbers of hours: 1 
Tor 4950 Task: Rosta bröd Date: 2013-12-12 Numbers of hours: 1 
Oden 4950 Task: Rosta bröd Date: 2013-12-12 Numbers of hours: 1 

現在我想刪除的任務(奧登4950任務:羅斯塔布羅德日期:小時2013年12月12日號:1)打印出來後。我真的很困惑我應該怎麼做...

+2

使用'Iterator'從'List'和調用'迭代器#remove'而不是'列表#remove'。 –

+0

for(int i = taskChecker.size()-1; i> = 0; i--)可能是錯誤的。你的意思是(int n = taskChecker.size()-1; n> = 0; n--),我敢打賭。你需要在這裏減少n。 –

+0

這段代碼對我來說毫無意義。我敢打賭,你需要重新思考。至少它不打印你寫的東西。 –

回答

3

您不能從列表中刪除項目,而不使用Iterator。它構成ConcurrentModificationException。正如您對問題的評論所述,請使用Iterator對象以允許從您正在操作的列表中刪除。

正如Iterator使用的一個簡單的例子:

Iterator<Object> it = listOfObjects.iterator(); 
while (it.hasNext()) 
{ 
    Object o = it.next(); 
    it.remove(); <--- removes the last object returned from Iterator.next() from the underlying collection 
}