为什么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任何一个请解释为什么它是这样的?
答
Arrays.asList
您的基本数组转换为List<int[]>
,其单个元素是数组,intList.contains(intArray)
将返回true
,但intList.contains(1)
不会。
如果您将int[]
数组更改为Integer[]
,您将获得预期的输出 - 即包含原始数组元素的List<Integer>
。
+0
感谢您的解释 – RSingh
你不应该使用'List'这样的原始类型。如果你写了'List',你会注意到代码不再编译。因为具有原始整数数组的'Arrays.asList'只会返回带有单个元素的List,不是由数组的所有元素组成的列表。 –
Tunaki
为什么是-2?对于来自C++的人来说,这并不明显。问题文本包含答案所需的全部内容。 – Bathsheba
@Bathsheba谢谢先生,看到-2后我以为我问了一个错误的问题,我是java的新手。 – RSingh