2011-09-30 99 views
0

在循環中,我做了一些動作,然後得到並添加字符串到列表1 循環後:list1包含2個字符串:好吧 現在,在另一個循環中,我得到每個迭代的價值,它返回一個字符串和我想檢查列表1中的字符串不提供第二:比較java列表

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

閱讀:http://stackoverflow.com/questions/23445/how-best-to-compare-two-collections-in-java-and-act-on-them –

+0

你問什麼問題?什麼不行? –

+0

我想在第二個循環中創建一個列表,然後驗證list1的內容在列表2中不可用 – lola

回答

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。收藏)等。

谷歌番石榴應該有類似的實用程序。

1

好像應該是

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

如果getValue回報String,你不能做一個contains運通過List

0

似乎您正試圖檢查一個列表(list1)是否包含在一個字符串中。那沒有意義。反之亦然。

+0

我想創建一個在第二個循環中列出,然後驗證list1的內容在列表2中不可用 – lola

0

如果你只是比較字符串列表一個簡單的contains()方法應該工作。

for(String value: list2){ 

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

您在第二個循環中引用「i」,但它在第一個循環中聲明。