Java十大简单性能优化(18)

privatetransientObject[
vals;

publicV put(K key V value) {

// ...

intindex = key.ordinal();

vals[index
= maskNull(value);

// ...

此实现的本质是这样一个事实 , 即我们拥有一个索引值数组 , 而不是哈希表 。 插入新值时 , 我们要做的就是查找映射项 , 只是要求枚举的常量序号 , 该序数由Java编译器在每种枚举类型上生成 。 如果这是一个全局配置图(即只有一个实例) , 增加的访问速度将帮助EnumMap大量强于大盘HashMap , 可少用一些堆内存 , 而这将有运行hashCode() , 并equals()在每个键 。

带走

Enum并且EnumMap是非常亲密的朋友 。 每当您将类似枚举的结构用作键时 , 请考虑实际上使这些结构成为枚举并将其用作in中的键EnumMap 。

推荐阅读