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建议的那样.