java - 列表与 Arrays.asList 构造的列表的区别有惊人的结果。为什么?

标签 java java-collections-api

<分区>

运行以下代码段后,您期望“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。但是,对于 Eclipse 4.5 M7 中的 JDK 1.8.0_25,它是一个包含 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 中没有任何元素。包含在该列表中。

关于java - 列表与 Arrays.asList 构造的列表的区别有惊人的结果。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30064705/

相关文章:

java - 无法从 MigLayout 底部删除多余的行

java - 使用 Gson 将 ArrayList 转换为字符串

java - Collections 层次结构中的 Deque 接口(interface)

java - 为什么这个一直循环?

java - Spring REST多个@RequestBody参数,可能吗?

java - 这些 spring session 键在 Redis 中代表什么?

java - 为什么 set <Integer> 是对相加的值进行排序?

Java 转换为列表后插入数组

java - 如何制作一系列卡片以及如何轻松匹配它们

java - 你能像在 ArrayList 中那样循环遍历 HashMap 吗?