2

<Destination -> Quantity>次のような、マップの値の並べ替えが必要なものを実装しようとしています。

<San Francisco -> 10, Seattle -> 20, LA -> 10}

値は必ずしも明確ではありません。TreeMap がキーでできることと同様に、最大値と最小値を持つキーと値のペアを取得できるようにしたいと考えています。

Google Guava の TreeMultimap を見つけました。これは Multimap の実装であり、そのキーと値は自然順序付けまたは提供されたコンパレーターによって順序付けられます。つまり、TreeMultimap には、キーまたは値の順序に基づいてキーと値のペアを取得できるメソッドがないようです (pollFirstEntry()たとえば、TreeMap で行うように)。

この点で、TreeMultimap にこの機能を持たせる方法について少し混乱しています。うまくいくはずだと思いますが、オブジェクトをインスタンス化する方法の問題でしょうか?

4

2 に答える 2

0

TreeMultimap値コンパレータに従って値を並べ替えるのは事実ですが、その並べ替えは、同じキーにマップされた他の値に関連する場合にのみ関連します。たとえば、

 a => 3
 a => 1
 b => 4
 b => 2

を繰り返し処理するとentries()、 が得られるはずです[(a, 1), (a, 3), (b, 2), (b, 4)]。同様に、 を反復処理すると、 の値が順番に返され、次に の値が順番に返されるので、values()取得する必要があります。[1, 3, 2, 4]ab

ただし、最初または最後のキーを取得keySet()するのは簡単NavigableSetです。first()last()

于 2013-06-19T20:34:07.160 に答える