以相反的顺序迭代LinkedHashMap
2022-09-01 03:17:37
我有一个LinkedHashMap:
LinkedHashMap<String, RecordItemElement>
我需要从给定键的位置向后迭代。因此,如果我被赋予了第10项的密钥,我需要通过哈希映射9,8,7等向后迭代。
我有一个LinkedHashMap:
LinkedHashMap<String, RecordItemElement>
我需要从给定键的位置向后迭代。因此,如果我被赋予了第10项的密钥,我需要通过哈希映射9,8,7等向后迭代。
这个问题需要一个反向顺序的LinkedHashMap,一些答案建议使用TreeSet,但这会根据键对地图重新排序。
此解决方案允许对原始的LinkedHashMap进行迭代,而不是像已经提出的那样对新的ArrayList进行迭代:
List<String> reverseOrderedKeys = new ArrayList<String>(linkedHashMap.keySet());
Collections.reverse(reverseOrderedKeys);
for (String key : reverseOrderedKeys) {
RecordItemElement line = linkedHashMap.get(key);
}
哈希地图:
HashMap<Integer, String> map = new HashMap<Integer, String>();
反向迭代值:
ListIterator<Sprite> iterator = new ArrayList<String>(map.values()).listIterator(map.size());
while (iterator.hasPrevious()) String value = iterator.previous();
反向迭代键:
ListIterator<Integer> iterator = new ArrayList(map.keySet()).listIterator(map.size());
while (iterator.hasPrevious()) Integer key = iterator.previous();
对两者进行反向迭代:
ListIterator<Map.Entry<Integer, String>> iterator = new ArrayList<Map.Entry<Integer, String>>(map.entrySet()).listIterator(map.size());
while (iterator.hasPrevious()) Map.Entry<Integer, String> entry = iterator.previous();