it-swarm.com.ru

Конвертировать список в массив в Java

Как я могу преобразовать List в Array в Java?

Проверьте код ниже:

ArrayList<Tienda> tiendas;
List<Tienda> tiendasList; 
tiendas = new ArrayList<Tienda>();

Resources res = this.getBaseContext().getResources();
XMLParser saxparser =  new XMLParser(marca,res);

tiendasList = saxparser.parse(marca,res);
tiendas = tiendasList.toArray();

this.adaptador = new adaptadorMarca(this, R.layout.filamarca, tiendas);
setListAdapter(this.adaptador);  

Мне нужно заполнить массив tiendas значениями tiendasList.

451
colymore

Или:

Foo[] array = list.toArray(new Foo[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);
989
Eng.Fouad

Альтернатива в Java 8:

String[] strings = list.stream().toArray(String[]::new);
149
Vitalii Fedorenko

Я думаю, что это самый простой способ:

Foo[] array = list.toArray(new Foo[0]);
35
Fer

Я наткнулся на этот фрагмент кода, который решает его.

//Creating a sample ArrayList 
List<Long> list = new ArrayList<Long>();

//Adding some long type values
list.add(100l);
list.add(200l);
list.add(300l);

//Converting the ArrayList to a Long
Long[] array = (Long[]) list.toArray(new Long[list.size()]);

//Printing the results
System.out.println(array[0] + " " + array[1] + " " + array[2]);

Преобразование работает следующим образом: 

  1. Создает новый массив Long с размером исходного списка
  2. Преобразует исходный ArrayList в массив, используя только что созданный
  3. Он преобразует этот массив в массив Long (Long []), который я назвал соответствующим образом «массив».
2
Armed10

Для ArrayList работает следующее:

ArrayList<Foo> list = new ArrayList<Foo>();

//... add values

Foo[] resultArray = new Foo[list.size()];
resultArray = list.toArray(resultArray);
0
Hans

Это работает. Вид.

public static Object[] toArray(List<?> a) {
    Object[] arr = new Object[a.size()];
    for (int i = 0; i < a.size(); i++)
        arr[i] = a.get(i);
    return arr;
}

Тогда основной метод.

public static void main(String[] args) {
    List<String> list = new ArrayList<String>() {{
        add("hello");
        add("world");
    }};
    Object[] arr = toArray(list);
    System.out.println(arr[0]);
}
0
John S.

Лучшее, что я придумал без Java 8, было: 

public static <T> T[] toArray(List<T> list, Class<T> objectClass) {
    if (list == null) {
        return null;
    }

    T[] listAsArray = (T[]) Array.newInstance(objectClass, list.size());
    list.toArray(listAsArray);
    return listAsArray;
}

Если у кого есть лучший способ сделать это, пожалуйста, поделитесь :)

0
pandre