当Java 7和Java 8都使用常量复杂度算法时,Hash Map有什么区别?根据我的理解,哈希映射通过哈希函数为对象生成哈希键,在恒定时间内搜索。
答案 0 :(得分:18)
在Java 7中,在计算散列函数的散列后,如果多于一个元素具有相同的散列,则通过线性搜索搜索它们,因此它的复杂度为(n)。在Java 8中,搜索是通过二进制搜索执行的,因此复杂性将变为log(n)。因此,这个概念是错误的,哈希映射以恒定的复杂性搜索对象,因为在任何时候情况都不是这样。
答案 1 :(得分:4)
您可能会发现Java专家newsletter的最新问题非常有用。多年来,它深入讨论了Java中的哈希问题;例如,指出你最好确保你的map键实现Comparable(使用Java8时)。