设置<localdate>包含LocalDate最佳实践

时间:2017-08-22 09:36:21

标签: java-8 set java-time localdate

我有:

ZoneId gmt = ZoneId.of("GMT");
LocalDateTime localDateTime = LocalDateTime.now();
LocalDate localDateNow = localDateTime.toLocalDate();

Set<LocalDate> hollidays = new HashSet<>();

我可以这样点LocalDate吗?

if(hollidays.contains(localDateNow)){
...
}

1 个答案:

答案 0 :(得分:3)

是的,你可以。

如果您查看LocalDate::equals()实施,您将能够看到:

int compareTo0(LocalDate otherDate) {
    int cmp = (year - otherDate.year);
    if (cmp == 0) {
        cmp = (month - otherDate.month);
        if (cmp == 0) {
            cmp = (day - otherDate.day);
        }
    }
    return cmp;
}

看起来像是日期的正确实施的equals方法 - 这意味着它可以与HashSet一起正常使用。

摘自hashCode()文档:

  

如果两个对象根据equals(Object)方法相等,则对两个对象中的每一个调用hashCode方法必须产生相同的整数结果。