2017-08-22 31 views
1

我:设置<LocalDate>包含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

您是否试过这样做? :) –

+1

是的,它的工作。 hollidays不是空的,我不写怎么填它 – user5620472

+3

所以你回答了你的问题,案例关闭了 –

回答

2

是的,你可以。

如果你看看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 s请正确工作。

hashCode()文档的摘录:

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