有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中“2的力量”的意义。util。HashMap实现

Possible Duplicate:
Java HashMap Default Initial Capacity

我正在读java中HashMap的实现。util。HashMap。初始容量、最大容量等为二的幂

声明的一部分是从java复制的。util。HashMap

/**
 * The default initial capacity - MUST be a power of two.
 */
static final int DEFAULT_INITIAL_CAPACITY = 16;


 /**
 * The maximum capacity, used if a higher value is implicitly specified
 * by either of the constructors with arguments.
 * MUST be a power of two <= 1<<30.
 */
static final int MAXIMUM_CAPACITY = 1 << 30;


/**
 * The table, resized as necessary. Length MUST Always be a power of two.
 */
transient Entry[] table;

评论建议尺寸必须是2的幂。为什么两个人的力量如此重要


共 (1) 个答案

  1. # 1 楼答案

    从理论上讲,只有当操作随着地图中元素的数量增加而变得微不足道时,我们才能分摊扩展列表的成本。每次达到负载系数时,将大小加倍是确保分录的扩展和重新加载得到摊销的一种方法

    最初它特别是2的幂的原因是,当我们散列一个元素时,得到的整数(32位)可以被截断为前k位,其中k是log(N),其中N是当前容量