2016-02-26 82 views
-2

tempC中的值已正確生成(已調試過),但當插入到「days」列表中時(已嘗試過簡單的Array,Linked List和ArrayList),它們會覆蓋先前的值並添加新的值。在for循環中添加日曆導致ArrayList覆蓋以前的值

讓我說明:

- >「天」有一個日曆,其值爲2016年3月26日
- >新值「2016年4月25日」被添加到收集
- >「天」現在有兩個日曆,而不是「2016年3月26日」和「2016年4月25日」他們有價值「2016年4月25日」和「04/25/2016」 「
- >它每次迭代都會這樣,始終添加新的日曆並覆蓋以前的所有日曆並使用新的日曆。

下面的代碼片段:

public LinkedList<Calendar> days = new LinkedList<Calendar>(); 

private void calculateCreditReturn(){ 
    Calendar tempC = Calendar.getInstance(); 
    for(int x=0; x<parcels; x++){ 
     tempC.add(Calendar.DAY_OF_YEAR, 30); 
     days.add(tempC); 
    } 
} 
+0

'日曆'是可變的,如果你只有一個對象.... –

回答

0

使用此:

public LinkedList<Calendar> days = new LinkedList<Calendar>(); 

private void calculateCreditReturn(){ 

    Calendar tempC = Calendar.getInstance(); 
    for(int x=0; x<10; x++){ 
     tempC.add(Calendar.DAY_OF_YEAR, 30); 
     Calendar forStore = (Calendar) tempC.clone(); 
     days.add(forStore); 
    } 
} 

並非存儲tempC,我們創建一個名爲forstore克隆,我們存儲在列表中。

0

您要添加的列表中的同一個對象。

你的情況:

tempC -> 03/26/2016 
list = [tempC] 
Change tempC: tempC -> 04/25/2016 
list = [tempC, tempC] 

所以,基本上,你必須將其添加到列表之前創建另一個日曆對象。