2015-11-29 2 views

ответ

7

Вы должны использовать версию toArray(), который принимает общий аргумент:

Integer[] finalResult = new Integer[result.size()]; 
result.toArray(finalResult); 

или, как однострочника:

Integer[] finalResult = result.toArray(new Integer[result.size()]); 
5

Вы не можете бросить List в массив, так как List - это не массив. Вот два способа преобразования List<Integer> в Integer[].

List<Integer> list = Arrays.asList(1, 2, 3); 
Integer[] arr = list.toArray(new Integer[list.size()]); 
Integer[] arr2 = list.stream().toArray(Integer[]::new); // Java 8 only 
2

List.toArray() возвращает массив объектов. Используйте List.toArray(T[]) вместо:

Integer[] finalResult = (Integer[]) result.toArray(new Integer[result.size()]); 
+0

Нет необходимости в гипсе. Тип возврата уже является 'T []', который привязывается во время компиляции к 'Integer []'. –

2

Вы должны инициализировать массив. Попробуйте как этот

Integer[] finalResult = new Integer[result.size()]; 
finalResult = result.toArray(finalResult); 
2

вы можете сделать это несколькими способами:

первый метод

List<T> list = new ArrayList<T>(); 

T [] countries = list.toArray(new T[list.size()]); 

пример:

List<String> list = new ArrayList<String>(); 

list.add("India"); 
list.add("Switzerland"); 
list.add("Italy"); 
list.add("France"); 

String [] countries = list.toArray(new String[list.size()]); 

второй метод

Foo[] array = new Foo[list.size()]; 
list.toArray(array); // fill the array 

третий метод

List<Integer> list = ...; 
int[] array = new int[list.size()]; 
for(int i = 0; i < list.size(); i++) array[i] = list.get(i); 

вы также можете найти некоторые примеры кодов здесь - http://www.tutorialspoint.com/java/util/arraylist_toarray.htm или http://examples.javacodegeeks.com/core-java/util/list/java-list-to-array-example/

+1

Вам нужно избавиться от 'myArray = new String();' в 4-м методе. –

+1

Да. Удалили. –

+1

Я узнал о новом методе Java 8-list.stream из вашего ответа. +1 за ваш ответ –

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