我有 2 个枚举值表示到对象的映射,我(当前)使用 HashMap 建模,其中 2 个枚举值用作键,对象是值。
这是低效的,因为我正在为 Enum1.values() x Enum2.values() 的每个组合创建一个新的 CompositeKey(Enum1 enum1, Enum2 enum2)。
我想跳过新的 CompositeKey() 问题。
我目前想到的解决方案是计算来自 2 个枚举的数字表示,类似于int numericKey = enum1.ordinal() * 0xFFFF + enum2.ordinal();
但当我这样做时,map.get(numricKey)
我仍然会自动装箱到 Integer - 因此创建新实例。
一个完美的解决方案(IMO)将是 Map 实现(不必是通用的......)但我认为 java 不存在这样的解决方案。
另一个选项可能mapping = new Object[Enum1.values().length][Enum2.values().length]
是我将使用它进行查找,Object = mapping[enum1.ordinal()][enum2.ordinal()]
但这似乎有点过于“C'ish”。
无论如何,运行时性能是这里最重要的方面。
欢迎评论。
谢谢,马克西姆。