【发布时间】:2019-10-05 16:57:18
【问题描述】:
我需要比较 2 个值不同的 ArrayList 的结果。因此,例如 list_SrcColumnDetails 将包含 10 个值,而 list_userEnteredfieldName 将包含 2 个值。现在在 list_userEnteredfieldName 的 2 个值中,list_SrcColumnDetails 中只存在 1 个。
所以我想在结果中显示哪个值匹配,哪个不匹配。 我尝试比较 ArrayLists,但根据我比较 ArrayLists 的知识,值的数量需要相同。所以我使用了 Iterator 但它没有按预期工作。关于如何通过 ArrayList 或 Iterator 比较每个索引处的值的任何帮助?
List<String> list_SrcColumnDetails = new ArrayList <String>(); // Id,Name,Adress,.....upto 10 values
List<String> list_userEnteredfieldName = new ArrayList <String>(); // Id,Text . Text does not exists in list_SrcColumnDetails
Iterator<String> user_iterator1 = list_userEnteredfieldName.iterator();
Iterator<String> Src_iterator2 = list_SrcColumnDetails.iterator();
while(user_iterator1.hasNext()){
if (user_iterator1.next().equals(Src_iterator2.next()))
{
System.out.println("User Entered field " + user_iterator1.toString()+ " exists in Source ");
}
else if(!Src_iterator2.hasNext() || !user_iterator1.next().equals(Src_iterator2.next())){
System.out.println("User Entered field " + user_iterator1.toString() + " is not correct ");
}
}
【问题讨论】:
-
广泛的问题。但我可以告诉你,你的实际比较方式行不通,因为这意味着两个列表之间的元素与两个迭代器的当前位置匹配。事实上,你的方式是不正确的,因为要确认一个值在一个列表中而不是在另一个列表中,你必须迭代另一个列表的所有元素。与 Collection.contains() 组合的第一个列表上的迭代可能会有所帮助,但它对出现检查有一些限制..