Java 反向迭代ConcurrentSkipListMap

Java 反向迭代ConcurrentSkipListMap,java,iterator,Java,Iterator,我有一张带有一些值的地图 public ConcurrentMap<Long, Double> data = new ConcurrentSkipListMap<>(); public ConcurrentMap data=new ConcurrentSkipListMap(); 我如何反向迭代?Java迭代器似乎没有next()函数或用于反转映射的函数。ConcurrentSkipListMap实现了ConcurrentNavigableMap,该函数有一个按相反顺

我有一张带有一些值的地图

public ConcurrentMap<Long, Double> data = new ConcurrentSkipListMap<>();
public ConcurrentMap data=new ConcurrentSkipListMap();

我如何反向迭代?Java迭代器似乎没有next()函数或用于反转映射的函数。

ConcurrentSkipListMap
实现了
ConcurrentNavigableMap
,该函数有一个按相反顺序返回此映射视图的方法:

Iterator<Entry<Long, Double>> reversed = data.descendingMap().entrySet().iterator();

非常聪明的解决方案!它有一个底层的比较器来生成reverseOrder()@mlewandowski,但接受条目和索引节点是单链接的事实,这样的迭代会慢得多,因为索引必须向前遍历
data = new ConcurrentSkipListMap<>((k1, k2) -> Long.compare(k2, k1));