How to get the previous key/value and the next key/value in Maps

前端 未结 2 1167
陌清茗
陌清茗 2020-12-09 06:04
for (Entry entry : map.entrySet()) { 
        Double key = entry.getKey(); 
        String value = entry.getValue(); 

        // double nextKe         


        
相关标签:
2条回答
  • 2020-12-09 06:17

    You can use NavigableMap for this, which entrySet()'s iterator return entries in ascending key order:

    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
    }
    

    Every entry retrieval is O(logN), so for full iteration this is not the most effective approach. To be more effective, on iteration just remember last 3 entries, and use 1st as prev, 2nd as current and 3rd as next, as @Malt suggests.

    0 讨论(0)
  • 2020-12-09 06:31

    A TreeMap is an OrderedMap and a NavigableMap and will allow you to iterate forward and backward, allowing you to access previous and next keys with lowerKey() and higherKey() respectively. However it might not be the best solution.

    Can you describe the actual problem you're trying to solve, and we can give you a more fitting solution?

    0 讨论(0)
提交回复
热议问题