在java中,如果Map
的键是基元的,那么它们工作得很好,但如果不是基元的话,可能会更复杂。对于Map<String, Payload>
,我们正在比较基元类型,因此如果先进行map.put("key1", payload1)
,然后进行map.get("key1")
,则I〃;I’我去拿钥匙。
如果我的密钥类型为Map<MyEnumKey, Payload>
,这将不起作用,除非我重写equals
和hashCode
方法。
在我的情况下,我目前拥有的密钥是这样的enum
:
Map<MyEnumKey, String> map = Map.of(
MyEnumKey.FIRST_KEY, "payload1"
MyEnumKey.SECOND_KEY, "payload2"
);
但我希望映射能够存储1个以上的枚举作为密钥。所以像List<MyEnumKey>
这样的东西是有道理的。
Map<..., String> map = Map.of(
(MyEnumKey.FIRST_KEY, MyEnumKey.SOME_KEY), "payload1"
MyEnumKey.SECOND_KEY, "payload2"
);
在这种情况下,在不创建封装List<MyEnumKey>
的单独类,然后覆盖equals
和hashcode
的情况下,定义映射的最佳方式是什么?这可以用";"功能性";方式
Map<List<EnumKey>, String> someMap
应该做这个把戏。