我想在1个键中存储3个值。 Hashmap只能容纳1个键,1个值,因此无法使用。 那么还有什么其他方法可以从价值A / B / C的一个键中获得。
键:字符串
值:String / String / int
答案 0 :(得分:11)
创建一个对象来保存3个值,然后新对象就是键值对中的值。
以下是一个示例实现:
class TripleValue {
String A;
String B;
int C;
public TripleValue(String a, String b, int c) {
A = a;
B = b;
C = c;
}
}
public static void main() {
Map<String, TripleValue> myMap = new HashMap<String, TripleValue>();
myMap.put("SomeKey", new TripleValue("String1", "String2", 10));
}
答案 1 :(得分:5)
其中一种方法可能是使用ArrayList / Set作为密钥的值。
示例:
List myTempList = new ArrayList();
myTempList.add("Hi");
myTempList.add("Hello");
myTempList.add("How are you");
myMap.key("key", myTempList);
另一种方法是,如果您知道每个键的值的数量总是相同,那么您可以创建一个holder对象并为该对象设置值并将其放在map中。
答案 2 :(得分:0)
尝试
Map<Integer, List<yourObject>> m = new HashMap<>();
然后,您需要检查密钥是否存在列表。如果是这样,请添加到列表中。否则创建一个ArrayList并添加它
例如:
public add(String key, MyObj myobj){
if (this.contains(key) ) {
this.get(key).add(myObj);
}else {
List<MyObject> list = new ArrayList<MyObject>();
list.add(myObj);
m.put(key, list);
}
}
答案 3 :(得分:0)
Java框架不支持Multimap,有一种解决方法,见下文。
Map<Object,ArrayList<Object>> multiMap = new HashMap<Object,ArrayList<Object>>();
另请查看此库Guava-libraries