38

LinkedHashMapがあります:

LinkedHashMap<String, RecordItemElement>

与えられたキーの位置から逆方向に繰り返す必要があります。したがって、10番目のアイテムのキーが与えられた場合、ハッシュマップ9、8、7などを逆方向に繰り返す必要があります。

4

6 に答える 6

9

それを繰り返す必要はありません。ただし、キーを取り外してリストに保存すると便利です。それが indexOf() タイプの操作を行う唯一の方法です。

List<String> keyList = new ArrayList<String>(map.keySet());
// Given 10th element's key
String key = "aKey";
int idx = keyList.indexOf(key);
for ( int i = idx ; i >= 0 ; i-- ) 
 System.out.println(map.get(keyList.get(i)));
于 2011-08-24T05:47:35.593 に答える
0

「user22745008」ソリューションとlabdasをいくつかのジェネリックで使用すると、メソッドとして非常にきちんとしたソリューションを得ることができます:

  public static <T, Q> LinkedHashMap<T, Q> reverseMap(LinkedHashMap<T, Q> toReverse)
  {
      LinkedHashMap<T, Q> reversedMap = new LinkedHashMap<>();
      List<T> reverseOrderedKeys = new ArrayList<>(toReverse.keySet());
      Collections.reverse(reverseOrderedKeys);
      reverseOrderedKeys.forEach((key)->reversedMap.put(key,toReverse.get(key)));
      return reversedMap;
    }
于 2017-02-14T04:02:02.650 に答える