Преобразование массива в список в Java - PullRequest
889 голосов
/ 09 апреля 2010

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

Я использовал Arrays.asList(), но поведение (и подпись) почему-то изменилось с Java SE 1.4.2 (документы теперь в архиве) на 8 и большинство фрагментов, которые я нашел на Интернет использует поведение 1.4.2.

Например:

int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
  • на 1.4.2 возвращает список, содержащий элементы 1, 2, 3
  • на 1.5.0+ возвращает список, содержащий массив спама

Во многих случаях это должно быть легко обнаружить, но иногда это может ускользнуть незамеченным:

Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);

Ответы [ 17 ]

3 голосов
/ 29 ноября 2017

В Java 9 у вас есть еще более элегантное решение использования неизменяемых списков с помощью нового метода фабрики удобства List.of:

List<String> immutableList = List.of("one","two","three");

(беззастенчиво скопировано с здесь )

2 голосов
/ 12 августа 2014

вы должны привести к массиву

Arrays.asList((Object[]) array)
2 голосов
/ 02 апреля 2018
  1. Использование гуавы:

    Integer[] array = { 1, 2, 3};
    List<Integer> list = Lists.newArrayList(sourceArray);
    
  2. Использование коллекций Apache Commons:

    Integer[] array = { 1, 2, 3};
    List<Integer> list = new ArrayList<>(6);
    CollectionUtils.addAll(list, array);
    
2 голосов
/ 11 марта 2016

One-вкладыш:

List<Integer> list = Arrays.asList(new Integer[] {1, 2, 3, 4});
0 голосов
/ 05 сентября 2017

Если это поможет: у меня была та же проблема, и я просто написал универсальную функцию, которая принимает массив и возвращает ArrayList того же типа с тем же содержимым:

public static <T> ArrayList<T> ArrayToArrayList(T[] array) {
    ArrayList<T> list = new ArrayList<T>();
    for(T elmt : array) list.add(elmt);
    return list;
}
0 голосов
/ 11 июня 2017

использовать две строки кода для преобразования массива в список, если вы используете его в целочисленном значении Вы должны использовать тип автобокса для примитивного типа данных

  Integer [] arr={1,2};
  Arrays.asList(arr);
0 голосов
/ 28 июля 2017

Так что это зависит от того, какую версию Java вы пытаетесь-

Java 7

 Arrays.asList(1, 2, 3);

OR

       final String arr[] = new String[] { "G", "E", "E", "K" };
       final List<String> initialList = new ArrayList<String>() {{
           add("C");
           add("O");
           add("D");
           add("I");
           add("N");
       }};

       // Elements of the array are appended at the end
       Collections.addAll(initialList, arr);

ИЛИ

Integer[] arr = new Integer[] { 1, 2, 3 };
Arrays.asList(arr);

В Java 8

int[] num = new int[] {1, 2, 3};
List<Integer> list = Arrays.stream(num)
                        .boxed().collect(Collectors.<Integer>toList())

Ссылка - http://www.codingeek.com/java/how-to-convert-array-to-list-in-java/

...