在循环中,我执行一些操作,然后获取并将字符串添加到list1
after循环:list1包含2个字符串:OK
现在,在另一个循环中,我在每次迭代中都获得了值,该值返回了一个字符串,我想检查第二个列表中的字符串是否不可用:

for(inti=0;i<nb;i++){
   value= table.getValue(i);
   list1.add(value);
}

for(int j=0;j<nb;j++){
   String toto = table.getValue(i);
   //do other actions

   //here verify that list1 doesn't contain toto
   //I tried :
   assetFalse(table.getValue(i).contains(list1)); //not OK !
}

最佳答案

//here verify that list1 doesn't contain toto
//I tried :
assetFalse(table.getValue(i).contains(list1)); //not OK !


首先,该方法称为assertFalse。

其次,您要检查toto是否包含列表(table.getValue(i)toto)。
请注意,您的代码也可以读为assertFalse(toto.contains(list1));(固定拼写并使用上面的赋值)。

相反,我猜您想这样做:

 assertFalse(list1.contains(toto));


还要注意,在您的两个循环中,您对相同的集合(table)和相同的索引(0至nb-1)进行迭代。因此,list将始终包含您要检查的值(除非您将其删除),因此断言将始终失败。

最后,请发布可编译代码:inti=0;不会像assetFalse(...)String toto = table.getValue(i);那样编译,因为i在该循环中是未知的(超出范围)。

如果您希望我们为您提供帮助,请在您的问题上加倍努力。

编辑

如果要比较两个集合,则还可以使用实用程序库,例如Apache Commons Collections,该库具有类似CollectionUtils.containsAny(collection1, collection2)的方法(如果两个集合中至少存在一个元素,则此方法将返回true)。

Google Guava应该具有类似的实用程序。

关于java - 比较java列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7610109/

10-10 20:05