Java HashMap中的复合键,带有don';t注意其中一个值的关系

Java HashMap中的复合键,带有don';t注意其中一个值的关系,java,hashmap,Java,Hashmap,我想设计一个HashMap,它有多个字符串/枚举作为复合键。我想更改功能,这样,如果映射中填充了一个enum/string值作为“default”,那么它将匹配搜索中的任何内容 如果特定值不存在,则此处的键将anyvalue与“default”匹配 假设以下类是此HashMap的关键类: class KeyClass{ String val1; String val2; String val3; } HashMap<KeyClass, String> randomMap

我想设计一个HashMap,它有多个字符串/枚举作为复合键。我想更改功能,这样,如果映射中填充了一个enum/string值作为“default”,那么它将匹配搜索中的任何内容

如果特定值不存在,则此处的键将anyvalue与“default”匹配

假设以下类是此HashMap的关键类:

class KeyClass{
  String val1;
  String val2;
  String val3;
}

HashMap<KeyClass, String> randomMap = new HashMap<>;

randomMap.put(new KeyClass("abc", "default", "efg"), "value1");
randomMap.put(new KeyClass("abc", "def", "efg"), "value2");
randomMap.get(new KeyClass("abc", "wef", "efg")); // should return "value1" as "wef" should match to default, 
randomMap.get(new KeyClass("abc", "def", "efg")) // should return "value2", as it explicitly matches
class键类{
字符串val1;
字符串val2;
字符串val3;
}
HashMap randomMap=新的HashMap;
randomMap.put(新的键类(“abc”、“默认”、“efg”)、“value1”);
randomMap.put(新的键类(“abc”、“def”、“efg”)、“value2”);
randomMap.get(新的键类(“abc”、“wef”、“efg”);//应返回“value1”,因为“wef”应与默认值匹配,
randomMap.get(newkeyclass(“abc”、“def”、“efg”)//应返回“value2”,因为它显式匹配

具体地说,我想了解这样一个映射结构的设计建议(对于instace,它是否可以与两个不同的映射一起工作等等),或者如果可能的话,如何为这样一个键类实现hashCode函数

如果我正确理解你的问题,这是不可能的。我认为您需要使用HashMap以外的其他工具来实现此目的

HashMap使用键类的
hashcode
/
equals
方法进行匹配,因此我将您的问题解释为如何实现这些方法

hashcode
实际上很简单。我想你唯一的选择就是返回一个常数。这是一个愚蠢的想法,但如果“默认值”与任何内容匹配,这将是必要的


equals
无法实现。您所描述的匹配将不是文档()所要求的对称和可传递的。

如果我正确理解您的问题,这是不可能的。我认为您需要使用HashMap以外的其他工具来实现此目的

HashMap使用键类的
hashcode
/
equals
方法进行匹配,因此我将您的问题解释为如何实现这些方法

hashcode
实际上很简单。我想你唯一的选择就是返回一个常数。这是一个愚蠢的想法,但如果“默认值”与任何内容匹配,这将是必要的


equals
无法实现。您所描述的匹配不会像文档()所要求的那样是对称和可传递的。

您能否详细说明此实现在何处有用,即给出一个实际使用示例?@MickMnemonic-我有一些工作流的查找字典,某些工作流非常具体,需要指定所有值,在其他情况下,工作流不依赖于复合键的部分输入。依赖关系在搜索时是未知的,但只有在更新表时才知道。i、 e.工作流1取决于所有值,而工作流2则是相同的,无论第二个参数中的值如何。您能否详细说明此实现在何处有用,即给出一个实际使用示例?@MickMnemonic-我有一些工作流的查找字典,某些工作流非常具体,需要指定所有值,在其他情况下,工作流不依赖于复合键的部分输入。依赖关系在搜索时是未知的,但只有在更新表时才知道。i、 e.工作流1依赖于所有值,而工作流2则是相同的,无论第二个参数中的值如何。除了哈希映射之外,还有什么适合这个问题吗?我对数据结构的其他建议持开放态度。同意除了HashMap之外,还有什么适合这个问题吗?我愿意接受关于数据结构的其他建议