2013-07-10 90 views
0

我需要存儲一個hashmap,key是一個String,val是標準的Java TimeZone。 (1)存儲TimeZone的Id字符串和(2)存儲對象本身,從而節省更多內存。直覺上我認爲1,但一個朋友告訴我TimeZone是一個工廠類,所以(2)更有效率。你的意見? TKSJava,存儲時區對象

1:

gmtToIanaMap.put("GMT+10:00", "Australia/Sydney"); 

2:

gmtToIanaMap.put("GMT+10:00", TimeZone.getTimeZone("Australia/Sydney")); 
+1

因爲'TimeZone'已經有這個信息,所以不需要使用地圖。你想達到什麼目的? –

+1

你有沒有證據證明記憶對你來說是個問題?如果不是,請使用任何一種方法提供最易讀的代碼。 –

+0

@LuiggiMendoza爲了您的好奇心:我收到來自Google日曆的事件,該日曆的偏移量爲+10,因此時區爲GMT + 10,但用戶意味着澳大利亞/悉尼。當日光節約時間到來時,澳大利亞/悉尼偏移+11,因此邏輯被破壞。這就是爲什麼我現在要立即將+10地圖映射到澳大利亞/悉尼。 回到我的問題:你怎麼看。 –

回答

0

一旦加載,每個時區信息將被緩存(在sun.util.calendar.ZoneInfoFile),所以它其實並不重要。如果在訪問該值之後,無論如何都需要TimeZone對象,我將存儲TimeZone對象。

這就是說,正如評論中提到的那樣,我不確定你應該擔心太多。從我所瞭解的情況來看,你會有24+的東西(比如說50來覆蓋x + 30分鐘的偏移類型)。時區信息存儲在jre/lib/zi下的磁盤上。其中大部分都在1K以下。記憶中的物體不會更大,所以我們正在談論50k。除非你對記憶力非常緊張,否則這幾乎是無關緊要的。最後,所有這些都是真的依賴於一個jre的實現,我不確定你想要以你的設計爲基礎。