知识卡片
集合内存有价
内容
数组、ArrayList、LinkedList、HashSet的单元素成本差异很大;HashSet用更多内存换常数级查找、去重和删除。发散:选集合时同时问两个问题:需要哪些操作,愿意为这些操作付多少空间。
参考来源
- 位置:《你真的会写代码吗-2021》第4章《宝贵的内存:空间效率》"常见集合的内存需求"对比表及相邻讨论(源文件:_epub-src/OEBPS/Text/0014.xhtml)
- 结论依据:原文对比数组、ArrayList、LinkedList、HashSet的内存需求,明确"HashSet处于一个不同的、更庞大的阵营中,特别是因为它将每个插入的元素包装到一个新对象中。但是,它在时间优化上提供了一些独特的能力……如果应用程序需要这些服务,而且内存不受限制,那么相对其较大的内存占用量,使用HashSet通常还是更划算的"。
- 原始内容:表4-4总结了这些内存需求……HashSet处于一个不同的、更庞大的阵营中,特别是因为它将每个插入的元素包装到一个新对象中。但是,它在时间优化上提供了一些独特的能力……如果应用程序需要这些服务,而且内存不受限制,那么相对其较大的内存占用量,使用HashSet通常还是更划算的。