有没有办法在不篡改Java函数的情况下严格保证每个Hashmap桶的条目数object.hashcode()
?
负载因子是平均值:(条目数)/(桶数)。本质上,假设我有一个容量为 1000 的 Hashmap。为了这个示例,假设我使用 1 的负载因子。我将要存储在 HashMap 中的 100 个对象具有错误的哈希码函数,它总是返回每个对象的值相同。当我存储完 100 个对象后,它们都将映射到同一个 HashMap 存储桶,我最终会获得 LinkedList 的性能。负载因子将保持沉默,因为 100 个条目 / 1000 个桶 = 0.1 < 1。现在如果我放置 1 M 个相同的对象会发生什么。HashMap 永远不会调整大小(无论如何都不会使用),因为永远不会触发LF 。
我知道这是现实世界中不常见的情况,但想提高我的理解。HashMap 有没有办法防止这种情况发生,或者至少从结构本身得到一些警告?