如何正确地将数组添加到Set中?

我正在尝试将Integer数组添加到Set中,如下所示:

int[] arr = { 2, 6, 4 , 2, 3, 3, 1, 7 }; 

Set<Integer> set = new HashSet<Integer>(Arrays.asList(arr));

我收到以下错误提示,

myTest.java:192: error: no suitable constructor found for HashSet(List<int[]>)

Set<Integer> set = new HashSet<Integer>(Arrays.asList(arr));

^

constructor HashSet.HashSet(Collection<? extends Integer>) is not applicable

(argument mismatch; inferred type does not conform to upper bound(s)

inferred: int[]

upper bound(s): Integer,Object)

constructor HashSet.HashSet(int) is not applicable

(argument mismatch; no instance(s) of type variable(s) T exist so that List<T> conforms to int)

where T is a type-variable:

T extends Object declared in method <T>asList(T...)

Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output

1 error

其次,我也尝试按照以下步骤进行操作,但仍然出现错误,

int[] arr = { 2, 6, 4 , 2, 3, 3, 1, 7 }; 

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

Collections.addAll(set, arr);

如何在Java中正确地将Integer数组添加到Set中?谢谢。

回答:

您需要使用包装器类型才能使用 Arrays.asList(T...)

Integer[] arr = { 2, 6, 4, 2, 3, 3, 1, 7 };

Set<Integer> set = new HashSet<>(Arrays.asList(arr));

手动添加元素,例如

int[] arr = { 2, 6, 4, 2, 3, 3, 1, 7 };

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

for (int v : arr) {

set.add(v);

}

最后,如果您需要保留插入顺序,则可以使用LinkedHashSet

以上是 如何正确地将数组添加到Set中? 的全部内容, 来源链接: utcz.com/qa/399075.html

回到顶部