2

1 つのキーに 3 つの値を格納したい。ハッシュマップは 1 つのキー、1 つの値しか保持できないため、使用できません。では、1 つのキーから値 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

方法の 1 つは、キーの値として 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

Javaフレームワークはマルチマップをサポートしていません。それを回避する方法があります。以下を参照してください。

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

このライブラリもご覧くださいGuava-libraries

于 2012-09-10T19:59:47.213 に答える
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 に答える