繁体   English   中英

构造函数HashSet <Integer> (int [])未定义

[英]The constructor HashSet<Integer>(int[]) is undefined

import java.util.HashSet;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.awt.*;

public class hash {

    public static void main(String[] args) {
        int[] paco = { 1, 2, 3, 4, 5, 5 };  //an array with duplicate items for the set
        Arrays.asList(paco);

        Set<Integer> set = new HashSet<Integer>(paco);  

    }

}

这是习惯于从列表创建hashSet的简单练习。 首先,我创建了一个数组,然后将其转换为列表,然后尝试将其转换为HashSet,但是出现以下错误: 构造函数HashSet(int [])未定义

与其创建数组然后创建列表,不如直接从您的值创建列表:

List<Integer> paco = Arrays.asList(1, 2, 3, 4, 5, 5);
Set<Integer> set = new HashSet<Integer>(paco);

另一个问题是您没有在任何地方保存Arrays.asList的返回值。

如果您只是尝试对int[]进行Arrays.asList(paco) ,它将返回一个List<int[]> (一个int数组的列表),其中包含单个元素。 那不能用来初始化集合。

如果您确实希望除了集合之外还具有一组值,则可以将它们声明为Integer而不是int ,这将导致将它们装箱,然后Arrays.asList将根据它们创建一个List<Integer> ,而不是List<int[]>

Integer[] paco = { 1, 2, 3, 4, 5, 5 };
Set<Integer> set = new HashSet<Integer>(Arrays.asList(paco));

如果您需要将int[]转换为Integer[]则可以使用Apache Commons的ArrayUtils通过以下方式完成:

Integer[] boxedArray = ArrayUtils.toObject(primitiveArray);

感谢Tomek的小费。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM