Как создать массив из ArrayList?

472
18 апреля 2017, 07:36

Есть ArrayList:

ArrayList<Double> ald = new ArrayList();

Нужно создать массив такого типа:

Double[] arr_ald = new Double[10];

Но вместо Double должен быть тип как у ald (ArrayList<Double>), чтобы можно было сделать перебор массива:

arr_ald[i]

и брать элементы:

ald.get(j)
Answer 1

Создать массив из объектов параметризованного типа (коими являются ArrayList<Double>) нельзя. Об этом говорится в документации.

Так что тут либо использовать raw type ArrayList (со всеми появляющимися при этом проблемами):

ArrayList<Double> list1 = new ArrayList<>(Arrays.asList(1.0, 2.0));
ArrayList<Double> list2 = new ArrayList<>(Arrays.asList(3.0, 4.0));
ArrayList[] lists = { list1, list2 };
for (ArrayList list : lists)
{
    for (Object o : list)
    {
        double value = (double)o;
        System.out.println(value);
    }
}

Либо создавать обёртку для ArrayList<Double>:

public class ArrayListDouble extends ArrayList<Double> { }

и использовать её:

ArrayListDouble list1 = new ArrayListDouble();
list1.addAll(Arrays.asList(1.0, 2.0));
ArrayListDouble list2 = new ArrayListDouble();
list2.addAll(Arrays.asList(3.0, 4.0));
ArrayListDouble[] lists = { list1, list2 };
for (ArrayListDouble list : lists)
{
    for (double value : list)
    {
        System.out.println(value);
    }
}
Answer 2

Массив списков (как и любых других параметризированных типов) создать нельзя.

Oracle Docs:

You cannot create arrays of parameterized types. For example, the following code does not compile:

List<Integer>[] arrayOfLists = new List<Integer>[2];  // compile-time error
READ ALSO
Как решить систему ОДУ методом Рунге-Кутты 4 порядка? [требует правки]

Как решить систему ОДУ методом Рунге-Кутты 4 порядка? [требует правки]

Привет, хочу решить систему ОДУ методом Рунге-Кутты 4 порядкаПравильно ли реализован этот метод?

216
Запись в таблицу word. Почему не работает?

Запись в таблицу word. Почему не работает?

Беру шаблонную строку: Добавляю ещё 3 таких строки к этой таблице:

183
как отправить cookie на iosocket

как отправить cookie на iosocket

есть вот такая кука static javanet

213
Ошибка при использовании сериализации

Ошибка при использовании сериализации

При компиляции мне выкидывает

160