如何验证列表元素是否与另一个列表的顺序相同?



list1 [1,2,3,4,5,6] --base list

列表2 [1,2,4,3,6,5]

输出:4,6顺序不正确

我必须检查顺序是否应按照列表1。如果没有,那么我必须按照list1打印所有顺序不正确的元素。

逐步浏览两个列表并打印不同的元素非常简单,但似乎您只想输出一次不同的元素。为此,您需要跟踪您已经看到的内容,例如使用Set

static void listCompare(List<Integer> list1, List<Integer> list2)
{
Set<Integer> seen = new HashSet<>();
int minLen = Math.min(list1.size(), list2.size());
for(int i=0; i<minLen; i++)
{
if(list1.get(i) != list2.get(i) && !seen.contains(list2.get(i)))
{
seen.add(list1.get(i));
System.out.format("%d (%d)%n", list2.get(i), list1.get(i));
}
}
}

测试:

List<Integer> list1 = Arrays.asList(1,2,3,4,5,6);
List<Integer> list2 = Arrays.asList(1,2,4,3,6,5);       
listCompare(list1, list2);

输出:

4 (3)
6 (5)

您可以使用列表迭代器将 list1 的值与列表 2 进行比较,如果比较结果给出 false,则可以打印 list2 的值。

相关内容

  • 没有找到相关文章

最新更新