我一直在阅读HashSet
vs TreeSet
的复杂性,我发现主题在哪里解释:“HashSet
更快,因为它是O(1)而不是O(log N)。”当然,我知道这一点。
然而,只有在您使用非常大的套装时才会有效。另一方面,我需要使用数百万个“小”集,每个集最多包含200个对象,而且远远少于20个(低于20个)。对它们的操作非常多样化(创建,添加,删除,成员资格测试,克隆......)因此我对如何最好地测量/模拟差异感到困惑。
对于如此小的设置尺寸,哪两个类的开销最小?无论是速度还是内存开销。那么LinkedHashSet
呢?
答案 0 :(得分:1)
因此我对如何最好地衡量/模拟差异感到困惑。
使用分析器。如果Set操作不支配结果(CPU时间,内存占用,分配率),那么由于amdahl's law.,您的选择在实践中不会产生影响。
TreeSet的最大优点是订购。
并且两种实现都没有特别的内存效率,那里有更好的设置,具体取决于您最关心的性能指标。它们是相应Map实现的包装器,而Maps本身也不是特别有效。
它们更具灵活性,提供了大量的API,而不是优化任何特定的性能方面。
答案 1 :(得分:1)
这个问题没有明确的答案,因为这完全取决于。所以这只是评论的散点图。