我知道在Java 8 HashMap中针对分布不佳进行了优化hashCode.并且在超过阈值的情况下,它将桶中的节点从链表重建为树.此外,它表明这种优化不适用于不具有可比性的密钥(在性能方面没有得到改善).在下面的示例中,我没有放入Comparable密钥HashMap
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;
class Main {
public static void main(String[] args) throws InterruptedException {
Map<Key, Integer> map = new HashMap<>();
IntStream.range(0, 15)
.forEach(i -> map.put(new Key(i), i));
// hangs the application to take a Heap Dump
TimeUnit.DAYS.sleep(1);
}
}
final class Key {
private final int i;
public Key(int i) {
this.i = i;
}
@Override
public boolean equals(Object o) {
if (this == …Run Code Online (Sandbox Code Playgroud)