比较java列表

时间:2011-09-30 12:07:56

标签: java list

在循环中,我做了一些操作,然后获取并添加字符串到list1 循环后:list1包含2个字符串:OK 现在,在另一个循环中,我得到每个迭代的值,它返回一个字符串,我想检查list1中的字符串在第二个不可用:

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 !
}

5 个答案:

答案 0 :(得分:1)

似乎应该是

assertFalse(list1.contains(table.getValue(i)));

如果getValue返回String,则您无法通过contains对其进行List操作。

答案 1 :(得分:1)

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

首先,该方法称为asse r tFalse。

其次,您要检查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应该有类似的实用程序。

答案 2 :(得分:0)

似乎您正在尝试检查字符串中是否包含列表(list1)。那没有意义。反之亦然。

答案 3 :(得分:0)

如果你只是比较字符串列表,那么一个简单的contains()方法应该可以工作。

for(String value: list2){

   //here verify that list1 doesn't contain string in list2
   if(list1.contains(value)){
      //Do something here.
   }
}

答案 4 :(得分:0)

您在第二个循环中引用“i”,但它在第一个循环中声明。