开发者

compare java lists

开发者 https://www.devze.com 2023-04-09 07:30 出处:网络
in the loop , I make some actions then get and add string to the list1 after loop: list1 contains 2 strings : OK

in the loop , I make some actions then get and add string to the list1 after loop: list1 contains 2 strings : OK now, in another loop I get value on each iteration which return 开发者_开发问答me a string and I would like to check that strings in list1 aren't available in the second:

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 !

First the method is called assertFalse.

Second you're checking if toto contains the list ( table.getValue(i) is toto). Note that your code could also be read as assertFalse(toto.contains(list1)); (with the spelling fixed and using the assignment above).

Instead I guess you'd like to do this instead:

 assertFalse(list1.contains(toto));

Also note that in your two loops you iterate over the same collection (table) and the same indices ( 0 to nb-1). Thus list will always contain the values you check for (unless you're removing them somewhere) and thus your assertation will always fail.

Finally, please post compilable code: inti=0; won't compile as well as assetFalse(...) nor String toto = table.getValue(i);, since i isn't known in that loop (it is out of scope).

If you want us to help you, please put more effort into your questions.

Edit

If you want to compare two collections, you could also use a utility library like Apache Commons Collections, which has methods like CollectionUtils.containsAny(collection1, collection2) (this would return true if at least one element is present in both collections) etc.

Google Guava should have similar utilities.


Seems like it should be

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

If getValue returns a String, you cannot do a contains operation on it passing a List.


Seems that you are trying to check if a list (list1) is contained in a string. That does not make sense. Try it vice versa.


If you're just comparing lists of strings a simple contains() method should work.

for(String value: list2){

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


You are referencing "i" in the second loop but it is declared in the first loop.

0

精彩评论

暂无评论...
验证码 换一张
取 消