2016-05-21 2 views
0

Я использую следующий код для преобразования набора в ИНТ []Преобразование набора <Integer> в примитивный массив

Set<Integer> common = new HashSet<Integer>(); 
int[] myArray = (int[]) common.toArray(); 

я получил следующее сообщение об ошибке:

error: incompatible types: Object[] cannot be converted to int[] 

Что бы самый чистый способ сделать преобразование без добавления элемента один за другим с использованием цикла for? Благодаря!

+0

Наконец хорошо отформатирован вопрос с правильной грамматикой на StackOverflow –

ответ

2

You cannot explicitly cast something into an array.

ли это:

Integer[] arr = new Integer[common.size()]; 
Iterator<Integer> iterator = common.iterator(); 
int i = 0; 
while (iterator.hasNext()){ 
    arr[i++] = iterator.next(); 
} 
+0

@tom почему бы код не компилировать? –

+0

@tom теперь будет работать? –

+0

@Tom Пожалуйста, отредактируйте мой ответ –

4

Вы обычно делаете это:

Set<Integer> common = new HashSet<Integer>(); 
int[] myArray = common.stream().mapToInt(Integer::intValue).toArray(); 
+0

чувак, я хочу узнать о '::' операторе где я узнаю его форму? –

+0

Я поддержал ваш ответ. –

+0

@TilakMadichetti Это называется «ссылкой на метод». См. здесь: https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html – xehpuk

4
Set<Integer> common = new HashSet<>(); 
int[] values = Ints.toArray(common); 
+0

'Integer []! = Int []' – xehpuk

+0

Изменено сейчас, чтобы использовать Guava's вспомогательная библиотека. – Veeram

Смежные вопросы