如何反向遍历链接哈希映射?
可能重复:
以相反的顺序迭代LinkedHashMap
如何以相反的顺序遍历链接的哈希映射? 地图中是否有任何预定义方法可以做到这一点?
我正在创建如下:
LinkedHashMap map = new LinkedHashMap(); map.put(1, "one"); map.put(2, "two"); map.put(3, "three");
List> list = new ArrayList<>(map.entries()); for( int i = list.size() -1; i >= 0 ; i --){ Entry entry = list.get(i); }
不是很漂亮,并且以入口集的副本为代价,如果您的地图有大量条目可能是个问题。
[List.reverse(List<>)][2]
Guava库有一个[List.reverse(List<>)][2]
,它允许你为每个样式循环而不是索引循环使用Java 5:
//using guava for( Entry entry : Lists.reverse(list) ){ // much nicer }
试试这个,它将以反向插入顺序打印键 :
ListIterator iter = new ArrayList<>(map.keySet()).listIterator(map.size()); while (iter.hasPrevious()) { Integer key = iter.previous(); System.out.println(key); }
您还可以按条目的反向插入顺序进行迭代:
ListIterator> iter = new ArrayList<>(map.entrySet()).listIterator(map.size()); while (iter.hasPrevious()) { Map.Entry entry = iter.previous(); System.out.println(entry.getKey() + ":" + entry.getValue()); }
番石榴规则:
List
Lists.reverse