我理解基于HashSet
的{{1}},因为它们非常相似。它使代码更加灵活,并最大限度地减少了实施工作量。但是,如果类禁止HashMap
元素,则HashSet的Entry
中的一个引用变量对我来说似乎是不必要的,因此整个条目没有任何意义。尽管如此,null
需要24字节的内存/元素,而如果我的数字是正确的话,具有set的元素的单个数组将只需要4个字节/元素。 (除了数组的标题)
如果我的观点是正确的,那么这种表现的优势真的会超重吗?
(如果我错了,我会从中学习)
答案 0 :(得分:1)
虽然这个问题主要是基于意见的,但我总结了一些关于这个主题的观点:
HashSet
出现在Java 1.2中。现在很难猜到当时设计决策的确切原因,但很明显Java并不适用于高负载应用程序;表演的作用不如简单。HashSet
的内存消耗不是最理想的。问题已知,错误JDK-6624565已注册,core-libs-dev的讨论会不时进行。但这对许多现实世界的应用程序来说是一个阻碍吗?可能,没有。HashSet
内存使用率不可接受的不常见应用程序,已经有很好的替代方案,例如trove THashSet。