如何使用一个键存储多个值

时间:2012-09-10 19:39:58

标签: java store key-value

我想在1个键中存储3个值。 Hashmap只能容纳1个键,1个值,因此无法使用。 那么还有什么其他方法可以从价值A / B / C的一个键中获得。

键:字符串

值:String / String / int

4 个答案:

答案 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