在 Groovy (SoapUI) 中创建属性值列表时,列表会自动排序吗?
When creating a list of Attribute values in Groovy (SoapUI), does the list get sorted automatically?
基本上,我正在尝试的是:
1. 从 SOAP API 响应中,获取特定属性的所有属性值的列表。该属性可以在响应中多次存在。
2.将此列表复制到第二个列表中,然后对第二个列表进行排序
3. 比较两个列表,看第一个和第二个列表是否相同
但是,我遇到了一个问题。当从 SOAP API 响应中读取属性值,然后在第二个列表中使用 Collections.sort 时,它似乎也在对第一个列表进行排序。
示例:
<Home>
<ele attr="12"/>
<ele attr="11"/>
<ele attr="13"/>
</Home>
我尝试了以下两件事:
方法一:
distances.add(new BigDecimal(Home.ele[i].@'attr'[0]))
log.info distances
distanceSorted = distances
Collections.sort(distanceSorted)
log.info distances
这给我的输出为 11,12,13
方法二:
distances.add(new BigDecimal(Home.ele[i].@'attr'[0]))
log.info distances
distanceSorted = distances
log.info distances
这给我的输出为 12,11,13
知道为什么在 distanceSorted 列表上使用 Collections.sort() 也会影响距离列表吗?另外,我该如何解决这个问题?
当你这样做时:
distanceSorted = distances
您只需让两个变量引用同一个列表即可。所以当你这样做时
Collections.sort(distanceSorted)
它对列表进行排序,因此两个变量现在都引用排序后的列表
将这两行替换为
distanceSorted = distances.sort(false)
false
告诉排序方法 return 一个新列表而不是就地排序原始列表
基本上,我正在尝试的是: 1. 从 SOAP API 响应中,获取特定属性的所有属性值的列表。该属性可以在响应中多次存在。 2.将此列表复制到第二个列表中,然后对第二个列表进行排序 3. 比较两个列表,看第一个和第二个列表是否相同
但是,我遇到了一个问题。当从 SOAP API 响应中读取属性值,然后在第二个列表中使用 Collections.sort 时,它似乎也在对第一个列表进行排序。
示例:
<Home>
<ele attr="12"/>
<ele attr="11"/>
<ele attr="13"/>
</Home>
我尝试了以下两件事:
方法一:
distances.add(new BigDecimal(Home.ele[i].@'attr'[0]))
log.info distances
distanceSorted = distances
Collections.sort(distanceSorted)
log.info distances
这给我的输出为 11,12,13
方法二:
distances.add(new BigDecimal(Home.ele[i].@'attr'[0]))
log.info distances
distanceSorted = distances
log.info distances
这给我的输出为 12,11,13
知道为什么在 distanceSorted 列表上使用 Collections.sort() 也会影响距离列表吗?另外,我该如何解决这个问题?
当你这样做时:
distanceSorted = distances
您只需让两个变量引用同一个列表即可。所以当你这样做时
Collections.sort(distanceSorted)
它对列表进行排序,因此两个变量现在都引用排序后的列表
将这两行替换为
distanceSorted = distances.sort(false)
false
告诉排序方法 return 一个新列表而不是就地排序原始列表