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

for (Entry entry : map.entrySet()) { Double key = entry.getKey(); String value = entry.getValue(); // double nextKey = ? // String nextvalue = ? // double prevKey = ? // String prevValue = ? } 

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

您可以使用NavigableMap ,其中entrySet()的迭代器按升序键顺序返回条目:

 NavigableMap myMap = new TreeMap<>(); //... for (Map.Entry e : myMap.entrySet()) { Map.Entry next = myMap.higherEntry(e.getKey()); // next Map.Entry prev = myMap.lowerEntry(e.getKey()); // previous // do work with next and prev } 

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

TreeMap是OrderedMapNavigableMap ,允许您向前和向后迭代,允许您分别使用lowerKey()higherKey()访问上一个和下一个键。 然而,它可能不是最好的解决方案。

你能描述一下你想解决的实际问题,我们可以给你一个更合适的解决方案吗?