java - Integer 和 int 数组的 containsAll 行为差异 (Java)

标签 java collections wrapper primitive

有人能解释一下为什么会这样吗:

Integer[] arr1 = {1,2,3,4,5};
Collection<?> numbers = Arrays.asList(new Integer[]{1,2,3});
System.out.println(Arrays.asList(arr1).containsAll(numbers));

打印“true”,而如果我们像这样将 Integer 换成 int:

int[] arr2 = {1,2,3,4,5};
Collection<?> numbers2 = Arrays.asList(new int[]{1,2,3});
System.out.println(Arrays.asList(arr2).containsAll(numbers2));

打印出“false”?

最佳答案

在第二种情况下,每个列表都由一个元素组成。这两个元素都是 int[] 数组。包含较大数组的列表不包含包含较小数组的列表的成员。

Arrays.asList() 方法接受类型为 T 的可变参数列表,并返回 List<T>。 .对于 Integers 数组,T 可以是 Integer,返回类型是 List。但是对于原始数组,T 不能是 int,因为不可能有 List<int>。 .

关于java - Integer 和 int 数组的 containsAll 行为差异 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16368944/

相关文章:

data-structures - 来自现有集合与迭代的 Java ArrayDeque 实例化

scala - 使用给定的部分大小列表将 Scala 列表拆分为多个部分。[分区]

python - 获取 Django 对象并将其包装在 QuerySet 中返回的函数?

java - 如何构建 JVM 项目来隔离专有代码?

java - 反向 for 循环 - 需要解释

java - Camunda Fox 客户端 - 监听器启动错误

c# - 允许使用相同 key 的通用集合

java synchronizedMap 对 map 对象的操作应该是同步的

TMDB 包装器 API 中的 Swift 函数不清楚

c++ - #ifdef SWIG : When does this conditional compilation is taken into consideration?