有人能解释一下为什么会这样吗:
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/