Проблемы с преобразованием набора целых чисел в массив int [] - PullRequest
5 голосов
/ 19 августа 2011

У меня нет проблем с преобразованием набора строк в массив string [], но у меня возникают проблемы с преобразованием набора целых чисел в массив int [].Как я могу преобразовать целые числа в его примитив?

Я не могу найти какие-либо связанные вопросы.Любые быстрые предложения, которые могут помочь?

Иногда автобокс не может быть использован, как в случае массивов.Я не думаю, что массив целых чисел будет автоматически преобразован в массив целых чисел.

Ответы [ 7 ]

16 голосов
/ 19 августа 2011

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 голосов
/ 20 августа 2011

Вот почему у Гуавы есть метод Ints.toArray(Collection<Integer>), возвращающий int[].

2 голосов
/ 30 августа 2018

с Java 8:

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

int[] array = set.stream().mapToInt(Integer::intValue).toArray();
1 голос
/ 19 августа 2011

Это должно работать при условии автоматической распаковки!

Set<Integer> myIntegers; // your set
int[] ints = new int[myIntegers.size()];
int index = 0;
for(Integer i : myIntegers){
    ints[index++] = i;
}
1 голос
/ 19 августа 2011

Полагаю, проблема в том, что Set<Integer>.toArray конвертируется в Integer[], а не int[]. Таким образом, у вас нет простого способа: вам нужно перебрать набор вручную и добавить его элементы в массив int. Преобразование отдельного Integer в int выполняется с помощью автобокса в Java 5 и выше.

0 голосов
/ 19 августа 2011

Если вы используете Java 5+, Autoboxing должен позаботиться об этом ...!

Какую ошибку вы получаете?

edit: ок, я вижу ..

Как и другие говорили:

зациклите ваш Set и просто поместите Integer в int [], автобокс должен преобразовать его.

0 голосов
/ 19 августа 2011

Вы можете вызвать функцию

Integer.intValue();

...

Позвольте мне узнать больше деталей о том, что вам нужно:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...