2017-08-22 59 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方法必須產生相同的整數結果。