2014-03-26 33 views
-2

這是返回false .... IM期待真正Java List containsAll返回false?

List<String> listA // [941, 946, 940, 942] 
List<String> listB //[941, 942, 940, 946,888, 466, 777] 

listB.containsAll(listA) //FALSE ?? 
+1

是空白準確嗎? –

+0

它是一個用逗號分隔的字符串列表.... whitespace正好在註釋 –

+0

的右邊,但是你的字符串沒有引號,所以我想知道是否空格被認爲是字符串的一部分。 –

回答

1

false結果意味着在listA有些值沒有在listB相應的(等於)值。這可能是由一些不必要的空格造成的。你需要知道,

"foo".equals(" foo") 

將返回false這意味着使用的值不相等的,因爲空間也算字符。


如果每個字符串格式正確,您提供的示例數據就可以正常工作。

import java.util.Arrays; 
import java.util.List; 

public class Test { 
    public static final void main(String[] ignored) { 
    List<String> listA = Arrays.asList(new String[]{"941", "946", "940", "942"}); 
    List<String> listB = Arrays.asList(new String[]{"941", "942", "940", "946", "888", "466", "777"}); 

    System.out.println(listB.containsAll(listA)); 
    } 
} 

輸出:true

+1

爲什麼在這種情況下這會被降低? – aliteralmind

+0

大聲笑..我不知道這個男人......這些帥哥有趣 –

+1

@aliteralmind可能是因爲它本質上[適合我](http://meta.stackexchange.com/questions/118992/are-works-for-me-答案 - 有效)評論,而不是答案(你沒有解釋OP做錯了什麼)。 – Pshemo