列表与 Arrays.asList 构造的列表的差异有令人惊讶的结果。为什么?
List difference with list constructed by Arrays.asList has surprising result. Why?
在以下代码段具有 运行 之后,您期望 "zs" 的值是多少?
Collection<Integer> xs = Arrays.asList(1,2,3);
int[] ys = {1};
List<Integer> zs = new ArrayList<>(xs);
zs.removeAll(Arrays.asList(ys));
我本来期望一个包含 2 和 3 的列表。但是,对于 JDK 1.8.0_25 在 Eclipse 4.5 M7 中,它是一个包含 1、2、3 的列表。删除没有影响。但是,当我将 "ys" 指定为非原始数组时,我得到了预期的结果:
Collection<Integer> xs = Arrays.asList(1,2,3);
Integer[] ys = {1};
List<Integer> zs = new ArrayList<>(xs);
zs.removeAll(Arrays.asList(ys));
这是怎么回事?
Arrays.asList(int[])
的类型是List<int[]>
。因此,xs
中的 none 个元素包含在该列表中。
在以下代码段具有 运行 之后,您期望 "zs" 的值是多少?
Collection<Integer> xs = Arrays.asList(1,2,3);
int[] ys = {1};
List<Integer> zs = new ArrayList<>(xs);
zs.removeAll(Arrays.asList(ys));
我本来期望一个包含 2 和 3 的列表。但是,对于 JDK 1.8.0_25 在 Eclipse 4.5 M7 中,它是一个包含 1、2、3 的列表。删除没有影响。但是,当我将 "ys" 指定为非原始数组时,我得到了预期的结果:
Collection<Integer> xs = Arrays.asList(1,2,3);
Integer[] ys = {1};
List<Integer> zs = new ArrayList<>(xs);
zs.removeAll(Arrays.asList(ys));
这是怎么回事?
Arrays.asList(int[])
的类型是List<int[]>
。因此,xs
中的 none 个元素包含在该列表中。