Java,存储Timezone对象

时间:2013-07-10 03:16:55

标签: java timezone

我需要存储一个hashmap,key是一个String,val是标准的Java TimeZone。 在(1)存储TimeZone的Id字符串和(2)存储对象本身之间,哪种方式可以节省更多内存。直觉我认为1,但朋友告诉我TimeZone是一个工厂类,所以(2)效率更高。你的意见? TKS

1:

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

2:

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

1 个答案:

答案 0 :(得分:0)

加载后,每个时区信息都会被缓存(在sun.util.calendar.ZoneInfoFile中),所以它并不重要。如果在访问该值之后,无论如何都需要TimeZone对象,我会存储TimeZone对象。

那就是说,正如评论中所提到的,我不确定你是否应该过分担心。根据我的理解,你会有24+这样的东西(比方说50覆盖x + 30分钟类型的偏移)。时区信息存储在jre / lib / zi下的磁盘上。其中大多数都不到1k。记忆中的物体不会大得多,所以我们谈论的是50k。除非你对内存非常紧张,否则这几乎无关紧要。

最后,所有这些都依赖于一个jre实现,我不确定你是否希望将你的设计作为基础。