gpt4 book ai didi

sorting - Groovy:按值对哈希键进行排序

转载 作者:行者123 更新时间:2023-12-02 20:47:46 25 4
gpt4 key购买 nike

我想按 value 对 key->value 的哈希值进行排序,并获取排序后的键的列表。

这似乎有效:

groovy> def map = [a:5, b:3, c:6, d:4].sort { a, b -> a.value <=> b.value }.keySet() 
groovy> println map

[b, d, a, c]

但是它总是有效吗?我不知道构建 keySet() 的迭代器是否总是按顺序迭代它们。

谢谢!

最佳答案

简短回答:是的,keySet()方法将始终返回一个有序 java.util.List .

长答案:这有点难以证明,因为我们必须查看一些源代码。

考试开始于groovy.runtime.DefaultGroovyMethods其中public static <K, V> Map<K, V> sort(Map<K, V> self, Closure closure)方法返回 java.util.LinkedHashMap ,这是有序的

LinkedHashMapSet<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 的新手,我只被允许发布一个,不得不删除大多数链接......抱歉。

关于sorting - Groovy:按值对哈希键进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4008815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com