I am working with many LinkedHashMap that are either LinkedHashMap, LinkedHashMap or Linke
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.