我试图转换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
应该自动装箱。
我稍微修改了一下代码,改为int
至String
:
String[] arr = {"hello", "world"};
Set<String> s = new HashSet<String>(Arrays.asList(arr));
这段代码工作正常。
我尝试了以下操作,更改 int
至Integer
:
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() // takes in put as Generics
Java
中的泛型不适用于 int
中的 primitive
类型。这就是您收到此错误的原因。
关于java - 在java中将数组转换为Set时出现编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26013528/