看到这样一张对比表的时候,我是懵逼的,HashSet 的操作,基本上都是直接调用底层 HashMap 的相关方法来完成,怎么就轻描淡写地来了句 HashSet 较 HashMap 来说比较慢呢?
通过面向浏览器编程,可算找到了一个靠谱的解释。
它们都必须计算hashcode,但请考虑HashMap键的性质--它通常是一个简单的String,甚至是一个Integer。计算它的hashcode要比整个对象的默认hashcode计算快得多。如果HashMap的键与存储在HashSet中的键是同一个对象,那么在性能上就不会有真正的差别。区别在于HashMap的键是什么类型的对象。
参考与感谢
https://stackoverflow.com/questions/16278995/why-is-hashmap-faster-than-hashset