java - 在java中将数组转换为Set时出现编译错误

标签 java arrays set

我试图转换int数组到Set<Integer> .

int[] arr = {5, 2, 7, 2, 4, 7, 8, 2, 3};
Set<Integer> s = new HashSet<Integer>(Arrays.asList(arr));

但是编译器不接受上面的代码。它说:“构造函数 HashSet(List) 未定义。”嗯,我以为int应该自动装箱。

我稍微修改了一下代码,改为intString :

String[] arr = {"hello", "world"};
Set<String> s = new HashSet<String>(Arrays.asList(arr));

这段代码工作正常。

我尝试了以下操作,更改 intInteger :

Integer[] arr = {5, 2, 7, 2, 4, 7, 8, 2, 3};
Set<Integer> s = new HashSet<Integer>(Arrays.asList(arr));

编译通过。

我的问题是:为什么java编译器不接受第一个代码?

最佳答案

int[] arr = {5, 2, 7, 2, 4, 7, 8, 2, 3};
Set<Integer> s = new HashSet<Integer>(Arrays.asList(arr));

因为您的 Set 类型为 Integer(对象),而 array 类型为 int(基元)。

阅读Arrays.asList()

Arrays.asList() // takes in put as Generics

Java 中的泛型不适用于 int 中的 primitive 类型。这就是您收到此错误的原因。

关于java - 在java中将数组转换为Set时出现编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26013528/

相关文章:

java - FutureTask 的自定义取消

java - 如何将一个值赋给多个变量

javascript - JQuery 数组重新排列 JSON 对象

java - 增加解析的多功能性 - Java

java - 如何在 Scala 中实例化 Unit?

android - 设置 Android 时出现问题 - 需要重新设置 ADT!

java - 在所有 cucumber 测试后运行

java - 将彩色 png 布局图像中的图案读取到数组中?

java - 无法使用 char 数组分割创建的字符串\n

c++ - 使用位掩码 c++ 显示集合的所有子集的递归函数