list - Groovy:比较列表忽略其中元素的顺序

我有两个列表,比方说:

def list1 = ["ABC", "DEF", "GHI", "JKL"]
def list2 = ["ABC", "DEF", "JKL", "GHI"]

我想比较这两个列表并确保它们具有相同的值,无论它们出现的顺序如何。

我已经试过了,但它似乎不起作用:

 assert new HashSet( Arrays.asList(list1)).equals(new HashSet( Arrays.asList(list2)))

谁能指出我正确的方向? 非常感谢。

最佳答案

如果你想继续使用 List 而不使用 Set,你可以比较排序列表:

def list1 = ["ABC", "DEF", "GHI", "JKL"]
def list2 = ["ABC", "DEF", "JKL", "GHI"]

assert list1 != list2
assert list1.sort() == list2.sort()

建议的基于集合的比较可能是危险的,因为列表包含不同数量的重复项:

def list1 = ["ABC"]
def list2 = ["ABC", "ABC", "ABC"]

assert list1.sort() != list2.sort()
assert list1 as Set == list2 as Set // GOTCHA!

https://stackoverflow.com/questions/69435561/

相关文章:

django - 使用 drf-spectacular 为 django API 定义组件模式

php - 我们在 PHP 数组中称这个符号 => 什么?

python - Pytorch 与转置之间的不同输出

reactjs - 路由在 webpack + react 项目中不起作用

go - panic : errors: *target must be interface or

next.js - Next JS 中的 Font Awesome 6(测试版)和动态图标名称

c++ - C++ 中具有不同数据成员的模板结构

c - 为什么这种 strcpy 的使用被认为是错误的?

c - 释放函数内部的指针,并在 main 中使用它

arrays - 当我尝试初始化 100 个元素的一维数组并使用指针填充它时出现段错误(核心已转储)