java - 为什么 HashMap.java 中的常量 DEFAULT_INITIAL_CAPACITY 使用 1 << 4 而不是 16?

标签 java hashmap

public class HashMap<K,V>
extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable
{
    /**
     * The default initial capacity - MUST be a power of two.
     */
    static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;//why not 16 here

有人可以给出更好的解释吗?

最佳答案

很简单:左移 1 生成一个常数,例如 1 << N 始终是 2 的幂。

可以用其他方式编写,但这种方式会更具 self 描述性。 我认为它完全等价,但它的编写方式可以清楚地说明值是如何产生的以及如何计算的

就像在这种情况下( 1 << 4 )一样,在这种情况下,它的目的是 2^4 即 16。

关于java - 为什么 HashMap.java 中的常量 DEFAULT_INITIAL_CAPACITY 使用 1 << 4 而不是 16?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34216685/

相关文章:

flutter - 限制Map中MapEntries的数量: Dart

java - 解析JSON并将其放入HashMap中

java - 从数组列表填充 ListView

java - Primefaces 3.4 单元内可编辑表格在验证失败后将 inputtext-cell 标记为红色

Java 类级别类型推断

java - JFormattedTextField: 格式化文本到没有空格的数字

java - TCP 套接字创建类如何收到一个新对等点已添加到注册表的通知?

algorithm - 什么数据结构可以有效地减少哈希表桶中的锁定成本?

java - 将 Xwiki 与现有 Angular 应用程序结合使用

java - 从 HashMap 中删除未使用的分配内存