0

マルチマップがあり、それを繰り返しhasnext()ます。

Set keySet = myMap.keySet();    

Iterator keyIterator = keySet.iterator();    

while (keyIterator.hasNext() ) {    

    Integer key = (Integer) keyIterator.next();    

    System.out.println("K"+key);    

    List values = (List) myMap.get(key);    

    System.out.println("V"+values);    

}       

出力は次のとおりです。

K=4、

V=[サム・インディア],

K=3,

V=[サム、サム US]、

K=5,

V=[サム]

しかし、次のような逆形式の出力が必要です。

K=5,

V=[サム]、

K=3,

V=[サム、サム US]、

K=4、

V=[サム・インディア]

マルチマップで hasPrevious() を使用できますか?

4

2 に答える 2

1

あなたは本当にジェネリックを使い始めるべきです。

最も簡単なハックはおそらく使用することです

ArrayList<List<?>> list = new ArrayList<>(keySet);
ListIterator<List<?>> iter = list.listIterator(list.size() - 1);

その後、逆方向に繰り返します。ただし、これはセットをシリアル化するため、O(n)余分なメモリになります。

于 2013-03-19T08:07:13.630 に答える
0

オプションの 1 つは、マップのサイズを取得し、最後のインデックスから開始して逆の順序でレコードを取得することです。イテレータのみを使用しますか? または、カスタム Iterator を記述して、目的の機能を取得することもできます。

于 2013-03-19T07:58:08.680 に答える