Краткий ответ : Да, метод keySet()
всегда возвращает заказанный java.util.List
.
Длинный ответ : Это немного сложно доказать, так как нам нужно взглянуть на некоторый исходный код.
Экзамен начинается в groovy.runtime.DefaultGroovyMethods
, где метод public static <K, V> Map<K, V> sort(Map<K, V> self, Closure closure)
возвращает java.util.LinkedHashMap
, то есть упорядоченный .
Метод LinkedHashMap
Set<K> keySet()
определен в классе java.util.HashMap
и возвращает Iterator
, вызывая метод Iterator<K> newKeyIterator()
, который переопределяется в классе LinkedHashMap
] [4]. Он возвращает LinkedHashMap$KeyIterator
, который [определяет метод K next()
, который внутренне вызывает метод Entry<K,V> nextEntry()
, который возвращает Entry
, который был определен в поле LinkedHashMap$Entry.after
.
Наконец, в методе LinkedHashMap$Entry.addBefore(Entry<K,V> existingEntry)
можно увидеть, что поле LinkedHashMap$Entry.after
установлено в порядке упорядоченный .
О, боже ... Я связал каждое сделанное мной заявление с соответствующим исходным кодом в groovy.runtime.DefaultGroovyMethods
, java.util.HashMap
и java.util.LinkedHashMap
, суммируя до 10 гиперссылок. К сожалению, как новичку в Stackoverflow, мне просто разрешено опубликовать один, при этом необходимо удалить большинство ссылок ... Извините.