在我的代码中,我默认使用ArrayList作为所有列表的实现,HashMap作为所有映射的实现,HashSet作为所有集合的实现。
从实际角度来看,如果选择错误的实现,会失去多少灵活性、可伸缩性、可读性和性能?什么时候值得花时间决定使用哪种实现?
在某些情况下,我肯定会清楚地看到为什么有人会使用LinkedList而不是ArrayList。什么时候有人觉得必须使用HashMap而不是TreeMap或HashTable?那Set呢?
问题:
- 选择不当的代价是什么?
- 有人有选择错误实现并导致数据中心着火的灾难故事吗?
- 有什么好的经验法则吗?
- 有哪些你不能没有的晦涩的集合实现?
我已阅读:
- https://docs.oracle.com/javase/1.5.0/docs/api/java/util/TreeMap.html:TreeMap是一个基于红黑树实现的有序映射表,可以按照键的自然顺序或者指定顺序进行排序。
- https://docs.oracle.com/javase/1.5.0/docs/api/java/util/HashMap.html:HashMap是一个基于哈希表实现的无序映射表,可以快速查找键值对。
- Java: ArrayList for List, HashMap for Map, and HashSet for Set? 等等...
我认为this问题从理论上来看很相关,但我更感兴趣的是现实世界中的答案。