它是否取决于使用retainAll的哪个集合对象?我正在使用字符串列表。
我搜索了很多,发现在这里和其他在线资源上有很多提示,表明它应该不改变列表的顺序,但没有明确的直接答案。如果已经回答了,请指出正确的方向。
我甚至找到了实现retainAll函数的代码示例,表明顺序没有被改动。但是我理解这些示例可能并不完全符合下载的java包中标准方法的编码。从我自己使用该方法的测试来看,它似乎保持原状。但是,由于我正在进行的测试特别依赖于列表保持原样,因此我想更加确定。
为了更加准确,我希望该功能是真实且稳健的。
我搜索了很多,发现在这里和其他在线资源上有很多提示,表明它应该不改变列表的顺序,但没有明确的直接答案。如果已经回答了,请指出正确的方向。
我甚至找到了实现retainAll函数的代码示例,表明顺序没有被改动。但是我理解这些示例可能并不完全符合下载的java包中标准方法的编码。从我自己使用该方法的测试来看,它似乎保持原状。但是,由于我正在进行的测试特别依赖于列表保持原样,因此我想更加确定。
为了更加准确,我希望该功能是真实且稳健的。
/**
* This function takes the expected list and verifies it is contained within the actual list, in the expected order
* @param expectedList {@link List} List ordered as it should be to pass criteria
* @param actualList {@link List} List ordered as it exists in the product
* @return {@link Boolean} returns true when the expectedList is ordered within the actualList correctly
*/
static boolean verifyOrder(List<String> expectedList, List<String> actualList)
{
boolean ordered = false
if (expectedList == actualList)
ordered = true
else
{
actualList.retainAll(expectedList)
if (actualList == expectedList)
ordered = true
}
return ordered
}
==
比较没有意义。你应该使用equals
来比较对象。 - Marco13List
保证它将维护元素的顺序。虽然retainAll
的契约没有提到remove
方法,但是 remove 方法的文档 确保顺序被保留。retainAll 的文档 表示它“删除”元素,这对我来说意味着相同的删除行为:即保持顺序。 - VGR