为啥 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

为啥 count(false) 返回 1?

为啥 WinAPI FormatMessage 失败,总是返回 false

为啥当 == 为空值返回 true 时 >= 返回 false?

为啥下面的代码块应该返回 false?

为啥 QFile::canReadLine() 总是返回 false?