2016-03-07 277 views
0

請參閱下面的代碼。爲什麼List.contain返回false

int[] intArray={1,2,3,4,3,4,5}; 
    List intList=Arrays.asList(intArray); 
    System.out.println(intList.contains(1)); 

上面的代碼是返回false.can任何一個請解釋爲什麼它是這樣的?

+2

你不應該使用'List'這樣的原始類型。如果你寫了'List ',你會注意到代碼不再編譯。因爲具有原始整數數組的'Arrays.asList'只會返回帶有單個元素的List,不是由數組的所有元素組成的列表。 – Tunaki

+0

爲什麼是-2?對於來自C++的人來說,這並不明顯。問題文本包含答案所需的全部內容。 – Bathsheba

+0

@Bathsheba謝謝先生,看到-2後我以爲我問了一個錯誤的問題,我是java的新手。 – RSingh

回答

0

Arrays.asList您的基本數組轉換爲List<int[]>,其單個元素是數組,intList.contains(intArray)將返回true,但intList.contains(1)不會。

如果您將int[]數組更改爲Integer[],您將獲得預期的輸出 - 即包含原始數組元素的List<Integer>

+0

感謝您的解釋 – RSingh

相關問題