Groovy 如何比较两个列表

Groovy 如何比较两个列表,groovy,Groovy,我在Soapui中使用groovy脚本,我面临两个列表之间的比较问题: 一方面我有期望值(类型字符串),另一方面我有恢复值(类型ArrayList) 期望值如下所示: expected [[hsb:[100, 100, 100], type:hsb, wt:null], [hsb:null, type:wt, wt:60]] recovered [[type:hsb, wt:null, hsb:[100, 100, 100]], [type:wt, wt:60, hsb:null]] 其中一

我在Soapui中使用groovy脚本,我面临两个列表之间的比较问题: 一方面我有期望值(类型字符串),另一方面我有恢复值(类型ArrayList)

期望值如下所示:

expected [[hsb:[100, 100, 100], type:hsb, wt:null], [hsb:null, type:wt, wt:60]]
recovered [[type:hsb, wt:null, hsb:[100, 100, 100]], [type:wt, wt:60, hsb:null]]
其中一个是这样的:

expected [[hsb:[100, 100, 100], type:hsb, wt:null], [hsb:null, type:wt, wt:60]]
recovered [[type:hsb, wt:null, hsb:[100, 100, 100]], [type:wt, wt:60, hsb:null]]
所以基本上它应该匹配,但是我不知道如何通过编程实现

如果我使用
expected\u collection=expected\u value.tokenize(“[]”)将“expected”转换为数组,我会丢失元素,解析数组会得到以下结果:

Thu Nov 14 16:42:31 CET 2019: INFO: hsb:
Thu Nov 14 16:42:31 CET 2019: INFO: 100, 100, 100
Thu Nov 14 16:42:31 CET 2019: INFO: , type:hsb, wt:null
Thu Nov 14 16:42:31 CET 2019: INFO: , 
Thu Nov 14 16:42:31 CET 2019: INFO: hsb:null, type:wt, wt:60

是否可以在有限的级别上标记化?例如,[]的第一级?

您的主要问题是试图将列表的字符串表示形式与常规列表进行比较。如果您可以将预期列表声明为
列表
,那么Groovy的
=
操作符将比较两个映射列表,而不管映射在这些列表中的顺序如何。(映射的
==
也不关心键值顺序)在soapui中,当您通过自定义属性传递参数时,最终会得到字符串。。。在通过自定义属性传递它们之前,我将检查是否可以将它们设置为映射列表(在这种情况下,json parseText允许以更合适的格式恢复它们),它实际上是有效的!:)谢谢你的帮助