Has*_*ani 2 java calendar arraylist
我正在尝试将连续的日历天添加到中ArrayList
。当我添加一天ArrayList
并稍后使用Calendar.add方法转到第二天时,我不知道为什么ArrayList
也会自动修改,即原始条目添加了1天?下面是我的代码,可以解释这种情况:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.ArrayList;
public class TestingStuff {
public static void main(String[] args) throws ParseException {
ArrayList<Calendar> cals = new ArrayList<Calendar>();
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd");
Calendar startDate = Calendar.getInstance();
startDate.setTime(sdf.parse("Mar 25"));
cals.add(startDate);
Calendar secondDate = startDate;
secondDate.add(Calendar.DATE, 1);
Calendar thirdDate = Calendar.getInstance();
thirdDate.setTime(sdf.parse("Mar 26"));
if (cals.contains(thirdDate)) {
System.out.println("It does contain");
} else {
System.out.println("Sorry, it does not contain");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我预计不会在3月26日举行ArrayList
,但确实如此。非常感谢!
Calendar secondDate = startDate;
secondDate.add(Calendar.DATE, 1);
Run Code Online (Sandbox Code Playgroud)
该行表示secondDate
和startDate
指向同一对象,因此修改一个对象也会修改另一个对象。
如果您想要一个Calendar
比另一个实例晚一天的新实例,则需要克隆第一个实例,然后按照此答案中的建议修改克隆。例如:
Calendar secondDate = (Calendar)startDate.clone();
secondDate.add(Calendar.DATE, 1);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
606 次 |
最近记录: |