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


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(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[]>(整数数组列表(。这不能用于初始化集合。

如果你真的想除了集合之外还有一个值数组,你可以将它们声明为 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);

感谢托梅克的提示。

相关内容

最新更新