为什么List.contain返回false

问题描述:

请参阅下面的代码。为什么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

Arrays.asList您的基本数组转换为List<int[]>,其单个元素是数组,intList.contains(intArray)将返回true,但intList.contains(1)不会。

如果您将int[]数组更改为Integer[],您将获得预期的输出 - 即包含原始数组元素的List<Integer>

+0

感谢您的解释 – RSingh