Java Array и ArrayList - PullRequest
       5

Java Array и ArrayList

1 голос
/ 22 сентября 2011

Когда я пытаюсь создать ArrayList myArrayList из массива, используя Arrays.asList(myArray), я не получаю List элементов в myArray.Вместо этого я получаю список Array.

Размер myArrayList равен 1.Когда я пытаюсь сделать myArrayList.toArray(), я получаю двумерный массив.Что нужно сделать, чтобы получить элементы myArray в списке?Итерирует единственный вариант ??

Ответы [ 5 ]

3 голосов
/ 22 сентября 2011

Во-первых, метод asList является правильным методом:

Integer[] myArray = new Integer[3];
List<Integer> myArrayList = Arrays.asList(myArray);
System.out.println(myArrayList.size()); // prints 3, as expected

Проблема может заключаться в том, что вы вызываете метод varargs asList таким образом, что java интерпретирует ваш параметр как первое значение varargs (а не как массив значений).

Object myArray = new Integer[3];
List<Object> myArrayList = Arrays.asList(myArray);
System.out.println(myArrayList.size()); // prints 1 - java invoked it as an array of Integer[]

Чтобы решить эту проблему, попробуйте привести ваш параметр как Object[], чтобы вызвать varargs, например:

Object myArray = new Integer[3];
List<Object> myArrayList = Arrays.asList((Object[]) myArray); // Note cast here
System.out.println(myArrayList.size()); // prints 3, as desired
2 голосов
/ 22 сентября 2011

Какой тип myArray? Вы не можете использовать Arrays.asList с массивом примитивного типа (например, int[]). В этом случае вам нужно использовать цикл.

2 голосов
/ 22 сентября 2011

Существуют различные способы достижения этого. 3 Пример преобразования массива в массив arraylist и массивов в java может помочь.

1 голос
/ 22 сентября 2011

Будет ли это работать?

Object[] myArray = new Object[4]; //change this to whatever object you have
ArrayList<Object> list = new ArrayList<Object>();
for (Object thing : myArray) list.add(thing);
0 голосов
/ 22 сентября 2011

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

    String[] strings = new String[]{"1", "2"};
    List<String> list = Arrays.<String>asList(strings);
    System.out.println(list.size());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...