如何将一组整数转换为 int[] 数组?

问题描述 投票:0回答:7

Set
字符串转换为
String[]
数组没有问题,但将
Set
Integer
转换为
int[]
数组时遇到问题。

如何将

Integers
转换为其相应的原语?

我似乎找不到任何相关问题。有什么可以帮助的快速建议吗?

有时,无法使用自动装箱,就像数组的情况一样。我不认为整数数组会自动转换为整数数组。

java collections
7个回答
16
投票

string[]
不存在,我猜你的意思是
String[]

要将

Set<Integer>
转换为
int[]
,您必须手动迭代该集合。

像这样:

Set<Integer> set = ...;

int[] arr = new int[set.size()];

int index = 0;

for( Integer i : set ) {
  arr[index++] = i; //note the autounboxing here
}

请注意,集合没有任何特定的顺序,如果顺序很重要,您需要使用

SortedSet


13
投票

这就是为什么 Guava 有一个

Ints.toArray(Collection<Integer>)
方法,返回
int[]


12
投票

使用 java 8:

Set<Integer> set = new HashSet<>(); 
// TODO: Add implement for set

int[] array = set.stream().mapToInt(Integer::intValue).toArray();

1
投票

我想问题是

Set<Integer>.toArray
转换为
Integer[]
,而不是
int[]
。所以你没有简单的方法:你需要手动迭代集合并将其元素添加到 int 数组中。在 Java 5 及更高版本中,通过自动装箱处理将单个
Integer
转换为
int


1
投票

假设自动拆箱,这应该可行!

Set<Integer> myIntegers; // your set
int[] ints = new int[myIntegers.size()];
int index = 0;
for(Integer i : myIntegers){
    ints[index++] = i;
}

0
投票

您可以致电

Integer.intValue();

功能...

让我知道您需要什么的更多细节:)


0
投票

如果您使用 Java 5+ Autoboxing 应该注意这个......!

您遇到什么错误?

编辑:好的我明白了..

就像其他人说的:

在 Set 上循环并将 Integer 放入 int[] 中,自动装箱应该将其转换。

© www.soinside.com 2019 - 2024. All rights reserved.