LinkedHashSet - 此实现使其客户免受 HashSet 提供的未指定的、通常困惑的排序的影响,而不会导致与 TreeSet 相关的成本增加。
关于 LinkedHashMap 与 TreeMap 的说法相同
增加的成本(LinkedHashMap 与 TreeMap)究竟是多少?
这是否意味着 TreeSet 每个元素需要更多内存? LinkedHashSet 需要更多的内存用于两个额外的链接,但是 TreeSet 需要额外的内存来存储 Map.Entry 对元素(因为隐式基于 TreeMap),此外 LinkedHashSet 基于 HashMap 也有 Map.Entry 对元素开销......
所以区别在于添加新元素的速度有多快(在 TreeSet 的情况下,由于某些“排序”,它需要更长的时间)。
其他显着增加的成本是什么?
最佳答案
TreeSet
/TreeMap
具有更高的操作时间复杂度,例如 add()
, contains()
(对于 TreeSet
),put()
, containsKey()
(对于 TreeMap
)等...因为它们需要对数时间来定位树中的元素(或向树中添加元素),而 LinkedHashSet
/LinkedHashMap
这些操作需要预期的恒定时间。
就内存要求而言,差异很小:
TreeMap
条目持有键,值,3Entry
引用文献(左、右、父)和boolean
.LinkedHashMap
条目持有键,值,3Entry
引用(下一个,之前,之后)和一个int
.
关于java - TreeSet 与 LinkedHashSet 和 TreeMap 相比 LinkedHashMap 增加了多少成本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53608152/