1
在探索的Java EnumSet,我碰到凸轮2 包私人类,为什么EnumSet使用不同大小的RegularEnumSet和JumboEnumSet。它对性能有什么影响?
- RegularEnumSet
- JumboEnumSet
从EnumSet来源:
if (universe.length <= 64)
return new RegularEnumSet<>(elementType, universe);
else
return new JumboEnumSet<>(elementType, universe);
而且RegularE numSet构造是这样的:
RegularEnumSet(Class<E>elementType, Enum[] universe) {
super(elementType, universe);
}
而在JumboEnumSet构造的情况下是:
JumboEnumSet(Class<E>elementType, Enum[] universe) {
super(elementType, universe);
elements = new long[(universe.length + 63) >>> 6];
}
所以我的疑惑是:
为什么它采用根据不同的EnumSet大小如何影响 的表现?
使用元素数组的JumboEnumSet背后的逻辑是什么?