我已经用 Java 创建了 Policy
的实现适用于特定Namespace
的对象。
它们存储在 Map<Namespace,List<Policy>>
中结构,以便我可以通过调用 .containsKey()
轻松检索特定命名空间的策略和.get()
在 map 上。为此我已经覆盖 equals()
和hashCode()
根据JVM规则。工作得很好。
现在要求正在发生变化,并且 Namespace
突然由一个值列表组成,其中相等规则是“其中一个值必须匹配”。换句话说,如果 Namespace A
中存储的值之一与 Namespace B
中存储的值之一匹配他们是“平等的”。
显然是压倒一切的hashCode()
不再工作,因为我不知道要代表哪个值的代码。
如何才能最好地使我的设计适应新的平等规则?我还应该使用 Map
或者有适合我的情况的模式吗?
最佳答案
如果您允许使用库,也许 apache MultiKeyMap
会有所帮助。
https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/map/MultiKeyMap.html
关于java - 具有多值键的映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36095810/