【发布时间】:2018-08-26 12:57:03
【问题描述】:
基本上,我正在尝试的是: 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 更改为 distanceSorted.addAll(distances) 时,我可以获得所需的行为。但是,我仍然想知道为什么当我使用 = 运算符时会发生这种情况。 distanceSorted 是否只是距离的别名?
-
你看到下面的答案了吗?
标签: java list groovy collections soapui