我想在1個鍵中存儲3個值。 一個Hashmap只能容納1個key,1個值,所以不能使用。 那麼,我還需要從價值A/B/C的一個關鍵中獲得哪些其他方法。如何使用一個鍵存儲多個值
關鍵:字符串
值:字符串/字符串/ INT
我想在1個鍵中存儲3個值。 一個Hashmap只能容納1個key,1個值,所以不能使用。 那麼,我還需要從價值A/B/C的一個關鍵中獲得哪些其他方法。如何使用一個鍵存儲多個值
關鍵:字符串
值:字符串/字符串/ INT
創建一個對象來保存3個值,然後新對象就是您在Key-value對中的值。
下面是一個簡單的實現:
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));
}
其中一個方式可以是兼用的ArrayList /設定爲鍵值。
例子:
List myTempList = new ArrayList();
myTempList.add("Hi");
myTempList.add("Hello");
myTempList.add("How are you");
myMap.key("key", myTempList);
另一種方法是,如果你知道這個編號爲每個鍵的值總是將是相同的,那麼你可以創建一個holder對象並設置值,該對象,並把它在地圖上。
嘗試
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);
}
}
的Java框架不支持Multimap,有辦法解決它,見下文。
Map<Object,ArrayList<Object>> multiMap = new HashMap<Object,ArrayList<Object>>();
也看看這個庫Guava-libraries
也有(非標準API)Multimap之實現。(不,我在這裏推薦的是由於失去了打字記錄的事,但保持心) – 2012-09-10 19:41:03
我真的很新的哈希地圖/地圖/列表。所以很難理解你所討論的解決方案。我試着去理解和體會這個例子。但我不能得到解決方案。所以如果有一個完整的工作示例。我可以從中學習,並從那裏工作。 – user1621988