我使用JAX-WS构建了一个SOAP服务,它返回了许多排序结果,这些结果基本上按照客户认为美观的顺序排序。我的后端处理没有问题,结果是按照正确的顺序进行的。现在,由wsimport生成的客户端片段在接收到这些结果时正在使用ArrayLists,这些结果不能保证在迭代时保留顺序。有没有办法改写这个?或者甚至更好的东西,我可以在架构中的SOAP端做什么,告诉任何客户端它需要保留订单? (因为我知道我很快就要做一个C#客户端了)
TIA !!
答案 0 :(得分:3)
在收到这些结果时使用ArrayLists,但不保证在迭代时保留顺序。
这个假设来自哪里?
java.util.List
interface represents an ordered collection。集合中元素的顺序至关重要。在迭代时没有返回集合中元素的正确顺序的任何java.util.List
实现都会破坏接口的契约。
The Javadoc for the List.iterator()
方法状态(强调我的):
在正确序列中返回此列表中元素的迭代器。
ArrayList返回的迭代器不违反此规则。它以与底层数组相同的顺序向您返回元素。