我有一个HashMap<String, Integer>
我需要在整个活动生命周期,应用重启等时恢复/重启。
有以下选择:
1)使用共享首选项并循环遍历所有键,并将<key,value>
对完全相同地存储在共享首选项中
2)将hashmap转换为JSON并在共享首选项中保存为String
3)由于hashmap是可序列化的,因此将其保存在内部存储器中。
但明智的最佳方法是什么?什么是标准/最佳做法?
对我来说似乎是选项(3),但是从各个帖子中,很多人都说相反。对于我对hashmap的具体定义,可序列化的开销是多少?即没有复杂的对象键值?
答案 0 :(得分:1)
选项(3)。为什么呢?
1)共享首选项使用XML文件存储数据。您必须读取文件并解析XML。(读取+解析)
2)你必须阅读文件并解析XML,然后解析JSON。(阅读+解析+解析)
3)您只需阅读文件并初始化hashmap。(阅读)
为什么人们不使用option3?
因为他们希望与其他技术进行通信,因此可移植性将成为高级别要求。
答案 1 :(得分:0)
2)是标准和最佳实践。
我会考虑1)不良做法,因为它滥用SharedPreferences。
关于性能:您必须根据您的用例量身定制此基准。我希望2)最快,但根据地图大小和JSON转换实现,3)可能会更快。
旁注:如果您的地图少于1000个条目我不会担心性能
过早优化是万恶之源
- 唐纳德克努特
答案 2 :(得分:0)