Method to extract all keys from LinkedHashMap into a List

前端 未结 2 641
攒了一身酷
攒了一身酷 2021-01-07 21:51

I am working with many LinkedHashMap that are either LinkedHashMap, LinkedHashMap or Linke

2条回答
  •  感动是毒
    2021-01-07 22:22

    LinkedHashMap's consistent ordering applies to keys, values and entries.

    You should be just fine doing:

    ArrayList keys = new ArrayList<>(target.keySet());
    

    If you need more assurance, take a look at the source code for LinkedHashMap. The important part:

    private class KeyIterator extends LinkedHashIterator {
        public K next() { return nextEntry().getKey(); }
    }
    
    private class ValueIterator extends LinkedHashIterator {
        public V next() { return nextEntry().value; }
    }
    
    private class EntryIterator extends LinkedHashIterator> {
        public Map.Entry next() { return nextEntry(); }
    }
    
    // These Overrides alter the behavior of superclass view iterator() methods
    Iterator newKeyIterator()   { return new KeyIterator();   }
    Iterator newValueIterator() { return new ValueIterator(); }
    Iterator> newEntryIterator() { return new EntryIterator(); }
    

    So the iterators for the keys, values and entries all come from the same source (nextEntry()) which uses the linked list for iteration order.

提交回复
热议问题