2

我想在 1 个键中存储 3 个值。一个Hashmap只能保存1个key,1个value,所以不能使用。那么我还有什么其他方法可以从一键获取值 A/B/C。

键:字符串

值:字符串/字符串/整数

4

4 回答 4

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));

}
于 2012-09-10T19:41:04.750 回答
5

其中一种方法是使用 ArrayList/Set 作为键的值。

例子:

List myTempList = new ArrayList();
myTempList.add("Hi");
myTempList.add("Hello");
myTempList.add("How are you");

myMap.key("key", myTempList);

另一种方法是,如果您知道每个键的值的数量总是相同的,那么您可以创建一个持有者对象并为该对象设置值并将其放入映射中。

于 2012-09-10T19:40:32.177 回答
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);
    }
}
于 2012-09-10T19:41:54.187 回答
0

Java 框架不支持Multimap,有一种解决方法,见下文。

Map<Object,ArrayList<Object>> multiMap = new HashMap<Object,ArrayList<Object>>();

也看看这个库Guava-libraries

于 2012-09-10T19:59:47.213 回答