gpt4 book ai didi

Java Calendar.add 影响其他日历对象?

转载 作者:行者123 更新时间:2023-12-01 14:12:25 26 4
gpt4 key购买 nike

我正在尝试将连续的日历日添加到 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");
}
}
}

我不希望 ArrayList 中出现 26 Mar,但确实如此。非常感谢!

最佳答案

Calendar secondDate = startDate;
secondDate.add(Calendar.DATE, 1);

这一行意味着 secondDatestartDate 指的是同一个对象,所以修改一个也会修改另一个。

如果您想要一个比另一个晚一天的新 Calendar 实例,您需要克隆第一个实例然后修改克隆,如 this answer 中的建议.例如:

Calendar secondDate = (Calendar)startDate.clone();
secondDate.add(Calendar.DATE, 1);

关于Java Calendar.add 影响其他日历对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23112915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com