gpt4 book ai didi

sorting - Groovy list.sort 按第一个,第二个然后第三个元素

转载 作者:行者123 更新时间:2023-12-03 10:23:10 25 4
gpt4 key购买 nike

我有一个 groovy 列表,即

list = [[2, 0, 1], [1, 5, 2], [1, 0, 3]]

我想按第一个元素的顺序排序,然后是第二个,然后是第三个。

预期的
assert list == [[1, 0, 3], [1, 5, 2], [2, 0, 1]]

我从 list = list.sort{ a,b -> a[0] <=> b[0] } 开始但这仅对第一个元素进行排序。你怎么完成?

谢谢

最佳答案

您应该能够以相反的顺序遍历所需的排序:

list = [[2, 0, 1], [1, 5, 2], [1, 0, 3]]

list = list.sort{ a,b -> a[2] <=> b[2] }
list = list.sort{ a,b -> a[1] <=> b[1] }
list = list.sort{ a,b -> a[0] <=> b[0] }

assert list == [[1, 0, 3], [1, 5, 2], [2, 0, 1]]

每个都应该覆盖前一个,以保持组合排序的完整性。

您也可以使用 Elvis operator, ?: 按顺序链接它们。 ,当前一个相等时,它将推迟到下一个比较(并且 <=> 返回 0 ):
list.sort { a,b -> a[0] <=> b[0] ?: a[1] <=> b[1] ?: a[2] <=> b[2] }

关于sorting - Groovy list.sort 按第一个,第二个然后第三个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1467641/

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