[英]Hashmap with 2 keys
我想用2个键创建一个hashmap。 我将如何去做呢?
假设哈希图不是用1个键来查找值,而是需要1个键,然后使用另一个键将搜索范围缩小到某种类型。
我需要它来使用我们提供的播放器。 那将是key1。 对于key2,我需要将它作为类型的字符串,该类型可以是“ fly”或“ speed”之类的东西,然后我需要从中获取一个值。
我也不想为这个工作使用超过1个班级。
如果我可以做HashMap,但您不能直接做,那就太好了。
我已经搜索过,并且仍在学习一些Java,并且仍在阅读Oracle Java手册,因此请记住这一点,因为我不确定这是否是一个愚蠢的问题。
另外,我一直在寻找答案,但是我尝试调查其他用户的问题和答案,但这并没有解决我的问题。
您可以通过使用以下两个映射来做到这一点:
Map<Kay1DataType, Map<Kay2DataType, V>> map = //...
//...
然后访问即可执行以下操作:
map.get(Key1).get(Key2);
然后,您可以按照以下步骤放置值:
Map<Kay2DataType, V> secondMap = //...
secondMap.put(Key2, /* Object of type V*/);
终于放到map
map.put(key1, secondMap);
问题尚不完全清楚,但我会尽力而为...
您可以执行此操作的唯一逻辑方法(假设它是HashMap,并且键和值的类型相同),则可以让一个键的值充当第二个值的键,即所需的值。 我将写一个简单的示例(因为我知道当我尝试以书面形式进行解释时,这似乎有点令人困惑。)如果您有任何疑问,请随时发表评论。
public class Example {
static HashMap<String, String> map = new HashMap<>();
public static void main(String[] args) {
//The value from the first pair is the key for the second.
map.put("Key 1", "Value 1");
map.put("Value 1", "Value 2");
//Prints: Value 2
System.out.println(map.get(map.get("Key 1")));
}
}
如果绝对必须使键/值不同,则唯一的方法是两个不同的映射,遵循相同的过程:
public class Example {
static HashMap<String, String> map = new HashMap<>();
static HashMap<String, Integer> secondMap = new HashMap();
public static void main(String[] args) {
//The value from the first pair is the key for the second.
map.put("Key 1", "Value 1");
map.put("Value 1", 5);
//Prints: 5
System.out.println(map.get(map.get("Key 1")));
}
}
希望这可以帮助!
尝试使用Map
作为第一价值Map
。 例:
final Map<String,Map<String,String>> doubleKeyMap = new HashMap<>();
final Map<String,String> secondMap = new HashMap<>();
secondMap.put(secondKey, somevalue);
doubleKeyMap.put(mainKey, secondMap);
final String value = doubleKeyMap.get(firstKey).get(secondKey);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.