有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java反向迭代ConcurrentSkipListMap

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

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

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


共 (1) 个答案

  1. # 1 楼答案

    ConcurrentSkipListMap实现了ConcurrentNavigableMap,它有一个^{}方法返回此映射的视图,顺序相反:

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

    然而,CSLM反向迭代器比直接迭代器慢得多(每个next()的O(logn)vs O(1),因此只有在很少需要时才应该使用。否则考虑使用“反转”自定义比较器创建地图:

    data = new ConcurrentSkipListMap<>((k1, k2) -> Long.compare(k2, k1));