2

キーごとに 2 つの値を持つマルチマップを使用しています。以下は、各値を個別に取得するために使用しているコードです。

コードの最初のビットは、最初のオブジェクト値を取得します。

for(Object object : map.get(object))
{
    return object
}

次に、別の方法を使用して他の値を取得しています。このメソッドは、最初のオブジェクトを引数として取ります。

for(Object object : team.get(object))
{
    if(object != initialObject)
    {
        return object;
    }
}

これは「ハック」なやり方のように思えますが、もっと簡単に値を取得する方法はありますか?

4

3 に答える 3

7

Guava を使用している場合Iterables#getは、おそらく必要なものです。反復可能なものから N 番目のアイテムを返します。例:

Multimap<String, String> myMultimap = ArrayListMultimap.create();

// and to return value from position:
return Iterables.get(myMultimap.get(key), position);

を使用している場合はListMultimap、リストへのマップと非常によく似た動作をするため、 を直接呼び出すことができますget(n)

于 2012-08-07T20:13:49.460 に答える
3
Collection<Object> values = map.get(key);
checkState(values.size() == 2, String.format("Found %d values for key %s", values.size(), key));

return values.iterator().next(); // to get the first

Iterator<Object> it = values.iterator();
it.next(); // move the pointer to the second object
return it.next(); // get the second object
于 2012-08-07T19:17:23.503 に答える