为啥 List.contain 返回 false [重复]
Posted
技术标签:
【中文标题】为啥 List.contain 返回 false [重复]【英文标题】:why List.contain is returning false [duplicate]为什么 List.contain 返回 false [重复] 【发布时间】:2016-06-20 19:10:31 【问题描述】:请看下面的代码。
int[] intArray=1,2,3,4,3,4,5;
List intList=Arrays.asList(intArray);
System.out.println(intList.contains(1));
上面的代码返回false。谁能解释一下为什么会这样?
【问题讨论】:
你不应该使用像List
这样的原始类型。如果你写了List<Integer>
,你会注意到代码不会再编译了。因为带有原始整数数组的Arrays.asList
将只返回一个带有单个元素的列表,即数组;不是由数组的所有元素组成的列表。
为什么是-2?对于来自 C++ 的人来说,这一点都不明显。问题文本包含答案所需的所有内容。
@Bathsheba 谢谢先生,看到-2后我以为我问错了问题,我是java新手。
【参考方案1】:
Arrays.asList
将原始数组转换为 List<int[]>
,其单个元素是数组,intList.contains(intArray)
将返回 true
,但 intList.contains(1)
不会。
如果您将 int[]
数组更改为 Integer[]
,您将获得预期的输出 - 即包含原始数组元素的 List<Integer>
。
【讨论】:
感谢您的解释以上是关于为啥 List.contain 返回 false [重复]的主要内容,如果未能解决你的问题,请参考以下文章
为啥 false && (false)?false:true 返回 true
为啥 WinAPI FormatMessage 失败,总是返回 false