gpt4 book ai didi

java - 在代码中用 Java 创建和初始化 `HashMap` 的最佳方法?

转载 作者:行者123 更新时间:2023-11-29 05:00:09 25 4
gpt4 key购买 nike

它将包含以下条目:

{{Date(2014, 1, 1), Date(2013, 11, 31)},
{Date(2014, 1, 11), Date(2013, 11, 31)},
{Date(2014, 1, 21), Date(2013, 11, 31)},
{Date(2014, 1, 31), Date(2013, 11, 31)}}

我目前正在使用这个:

public static Map<Date, Date> dateMap = new HashMap<Date, Date>(){{
final Calendar cal = Calendar.getInstance();
final Calendar cal2 = Calendar.getInstance();
cal.set(2014, 0, 1, 0, 0, 0);
cal2.set(2013, 11, 31, 0, 0, 0);
put(cal.getTime(), cal2.getTime());
cal.set(2014, 0, 11, 0, 0, 0);
put(cal.getTime(), cal2.getTime());
cal.set(2014, 0, 21, 0, 0, 0);
put(cal.getTime(), cal2.getTime());
cal.set(2014, 0, 31, 0, 0, 0);
put(cal.getTime(), cal2.getTime());
}};

最佳答案

首先,已弃用 Date您使用的构造函数无法识别具有数值 12 的月份。十二月表示为 11,因此日期 Date(2013, 12, 31) 将导致重新计算。

其次,您现在可以使用 Java 8 的 LocalDate使您的方案更简单。

例子:

import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
* @author Buhake Sindi
* @since 03 September 2015
*
*/
public class Test {

private static LocalDate[][] localDates = {{LocalDate.of(2014, 1, 1), LocalDate.of(2013, 12, 31)},
{LocalDate.of(2014, 1, 11), LocalDate.of(2013, 12, 31)},
{LocalDate.of(2014, 1, 21), LocalDate.of(2013, 12, 31)},
{LocalDate.of(2014, 1, 31), LocalDate.of(2013, 12, 31)}};
private static Map<Date, Date> dates = new HashMap<>();

static {
for (LocalDate[] _localDates : localDates) {
dates.put(Date.from(_localDates[0].atStartOfDay(ZoneId.systemDefault()).toInstant()), Date.from(_localDates[1].atStartOfDay(ZoneId.systemDefault()).toInstant()));
}
}

public static void main(String[] args) {
System.out.println(dates);
}
}

请注意 LocalDate 中的月份从 1(一月)到 12(十二月),而不像 Date 来自 0(一月)和 11(十二月)。

关于java - 在代码中用 Java 创建和初始化 `HashMap<Date, Date>` 的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32369687/

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