如何获取地图中的上一个键/值和下一个键/值

d_l*_*low 10 java dictionary

for (Entry<Double, String> entry : map.entrySet()) { 
        Double key = entry.getKey(); 
        String value = entry.getValue(); 

        // double nextKey = ?
        // String nextvalue = ?

        // double prevKey = ?
        // String prevValue = ?
    } 
Run Code Online (Sandbox Code Playgroud)

是否有可能在迭代地图时知道前一个元素和下一个元素是什么?

Ale*_*you 17

你可以使用NavigableMap这个,entrySet()迭代器以递增的键顺序返回条目:

NavigableMap<Double, String> myMap = new TreeMap<>();

//...

for (Map.Entry<Double, String> e : myMap.entrySet()) {
    Map.Entry<Double, String> next = myMap.higherEntry(e.getKey()); // next
    Map.Entry<Double, String> prev = myMap.lowerEntry(e.getKey());  // previous

   // do work with next and prev
}
Run Code Online (Sandbox Code Playgroud)

每个条目检索都是O(logN),因此对于完整迭代,这不是最有效的方法.为了更有效,在迭代时只需记住最后3个条目,并使用1st作为prev,第2个作为current,第3个作为next,正如@Malt建议的那样.