在Java中将数组转换为Set时发生编译错误

纳塔布斯

我试图将intarray转换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编译器不接受第一个代码?

克里斯·克

您的问题是打给Arrays.asList(arr)使用原始数组已使它感到困惑。Java以不同的方式对待原语和对象。

asList仅知道对象数组,在您的情况下,它将整个数组视为单个元素。也就是说,asList(arr)正在返回Set<int[]>,因此满足以下条件:

Set<int[]> s = new HashSet<Integer>(ints);

那不是你的意思。

Java中没有自动装箱原始数组的功能。最快的解决方法是对输入数组使用Integer而不是int:

Integer[] arr = {5, 2, 7, 2, 4, 7, 8, 2, 3};   // java supports autoboxing when declaring an array 
Set<Integer> s = new HashSet<Integer>(Arrays.asList(arr));

否则,您将不得不自己迭代并添加元素。

int[] arr = {5, 2, 7, 2, 4, 7, 8, 2, 3};
Set<Integer> s = new HashSet<Integer>();        
for ( int v : arr ) {
    s.add(v);  // autoboxing of a single int is supported by Java, and happens here
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

较少转换为SASS时发生编译错误

来自分类Dev

较少转换为sass时发生编译错误

来自分类Dev

将数组/指针传递到库中的过程时发生编译错误

来自分类Dev

Android-实施ServiceConnection时发生编译错误

来自分类Dev

尝试安装qjournalctl时发生编译错误

来自分类Dev

建立专案时发生编译错误

来自分类Dev

尝试安装WebRTCVAD模块时发生编译错误

来自分类Dev

在Java中实现简单的泛型函数时发生编译错误?

来自分类Dev

在Java中实现简单的泛型函数时发生编译错误?

来自分类Dev

将java.util.list转换为java.util.list时发生编译器错误?

来自分类Dev

在vue组件的<script lang =“ ts”>代码内将查询选择器结果转换为HTMLElement时发生编译错误

来自分类Dev

将Objective-C代码转换为Java会产生编译错误

来自分类Dev

将Dictionary转换为AnyObject时发生编译器错误?

来自分类Dev

泛型中的多态性-传递继承的对象时发生编译错误(无法隐式转换类型)

来自分类Dev

Java:将实现列表的映射分配给通用类型的列表的映射时发生编译错误

来自分类Dev

当基类的虚拟方法隐藏发生时,如何强制发生编译错误?

来自分类Dev

使用boost :: lockfree :: spsc_queue时发生编译错误(boost中的错误吗?)

来自分类Dev

尝试在Rust v0.13.0中打印整数时发生编译错误

来自分类Dev

将List添加为参数时发生编译错误

来自分类Dev

将案例类的伴随对象用作类型参数时发生编译错误

来自分类Dev

为eventmachine -v'0.12.10'安装本机gem时发生编译错误

来自分类Dev

使用用户定义文字的成员时发生编译错误

来自分类Dev

UWP:在DataTemplate上使用x:DataType属性时发生编译错误

来自分类Dev

将Lambda表达式传递给模板函数时发生编译错误

来自分类Dev

当我混合使用隐式,类型参数和Nothing时发生编译错误

来自分类Dev

访问托管引用属性的重载运算符时发生编译错误

来自分类Dev

在gmock 1.8对象中使用std :: variant时发生编译错误

来自分类Dev

在Angular中运行ng build --prod时发生编译错误

来自分类Dev

使用std :: enable_if限制派生类的模板参数时发生编译错误

Related 相关文章

  1. 1

    较少转换为SASS时发生编译错误

  2. 2

    较少转换为sass时发生编译错误

  3. 3

    将数组/指针传递到库中的过程时发生编译错误

  4. 4

    Android-实施ServiceConnection时发生编译错误

  5. 5

    尝试安装qjournalctl时发生编译错误

  6. 6

    建立专案时发生编译错误

  7. 7

    尝试安装WebRTCVAD模块时发生编译错误

  8. 8

    在Java中实现简单的泛型函数时发生编译错误?

  9. 9

    在Java中实现简单的泛型函数时发生编译错误?

  10. 10

    将java.util.list转换为java.util.list时发生编译器错误?

  11. 11

    在vue组件的<script lang =“ ts”>代码内将查询选择器结果转换为HTMLElement时发生编译错误

  12. 12

    将Objective-C代码转换为Java会产生编译错误

  13. 13

    将Dictionary转换为AnyObject时发生编译器错误?

  14. 14

    泛型中的多态性-传递继承的对象时发生编译错误(无法隐式转换类型)

  15. 15

    Java:将实现列表的映射分配给通用类型的列表的映射时发生编译错误

  16. 16

    当基类的虚拟方法隐藏发生时,如何强制发生编译错误?

  17. 17

    使用boost :: lockfree :: spsc_queue时发生编译错误(boost中的错误吗?)

  18. 18

    尝试在Rust v0.13.0中打印整数时发生编译错误

  19. 19

    将List添加为参数时发生编译错误

  20. 20

    将案例类的伴随对象用作类型参数时发生编译错误

  21. 21

    为eventmachine -v'0.12.10'安装本机gem时发生编译错误

  22. 22

    使用用户定义文字的成员时发生编译错误

  23. 23

    UWP:在DataTemplate上使用x:DataType属性时发生编译错误

  24. 24

    将Lambda表达式传递给模板函数时发生编译错误

  25. 25

    当我混合使用隐式,类型参数和Nothing时发生编译错误

  26. 26

    访问托管引用属性的重载运算符时发生编译错误

  27. 27

    在gmock 1.8对象中使用std :: variant时发生编译错误

  28. 28

    在Angular中运行ng build --prod时发生编译错误

  29. 29

    使用std :: enable_if限制派生类的模板参数时发生编译错误

热门标签

归档