Перейти к основному содержимому

Преобразование между массивом и списком в Java

· 2 мин. чтения

Задача: Медиана двух отсортированных массивов

Даны два отсортированных массива размерами n и m. Найдите медиану слияния этих двух массивов.
Временная сложность решения должна быть O(log(m + n)) ...

ANDROMEDA

1. Обзор

В этом кратком руководстве мы узнаем, как преобразовывать массив в список, используя основные библиотеки Java, коллекции Guava и Apache Commons.

Эта статья является частью серии «Java — Back to Basic» здесь, на ForEach.

2. Преобразовать список в массив

2.1. Использование простой Java

Начнем с преобразования списка в массив с использованием простой Java :

@Test
public void givenUsingCoreJava_whenListConvertedToArray_thenCorrect() {
List<Integer> sourceList = Arrays.asList(0, 1, 2, 3, 4, 5);
Integer[] targetArray = sourceList.toArray(new Integer[0]);
}

Обратите внимание, что для нас предпочтительным способом использования метода является toArray(new T[0]) по сравнению с toArray(new T[size]) . Как доказывает Алексей Шипилев в своем блоге , это кажется быстрее, безопаснее и чище.

2.2. Использование гуавы

Теперь давайте воспользуемся API Guava для того же преобразования:

@Test
public void givenUsingGuava_whenListConvertedToArray_thenCorrect() {
List<Integer> sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
int[] targetArray = Ints.toArray(sourceList);
}

3. Преобразование массива в список

3.1. Использование простой Java

Начнем с простого Java-решения для преобразования массива в список :

@Test
public void givenUsingCoreJava_whenArrayConvertedToList_thenCorrect() {
Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
List<Integer> targetList = Arrays.asList(sourceArray);
}

Обратите внимание, что это список фиксированного размера, который по-прежнему будет поддерживаться массивом. Если нам нужен стандартный ArrayList, мы можем просто создать его экземпляр:

List<Integer> targetList = new ArrayList<Integer>(Arrays.asList(sourceArray));

3.2. Использование гуавы

Теперь давайте воспользуемся API Guava для того же преобразования:

@Test
public void givenUsingGuava_whenArrayConvertedToList_thenCorrect() {
Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
List<Integer> targetList = Lists.newArrayList(sourceArray);
}

3.3. Использование коллекций Commons

Наконец, давайте воспользуемся API коллекций Apache Commons CollectionUtils.addAll , чтобы заполнить элементы массива в пустом списке:

@Test 
public void givenUsingCommonsCollections_whenArrayConvertedToList_thenCorrect() {
Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
List<Integer> targetList = new ArrayList<>(6);
CollectionUtils.addAll(targetList, sourceArray);
}

4. Вывод

Реализацию всех этих примеров и фрагментов кода можно найти на GitHub . Это проект на основе Maven, поэтому его легко импортировать и запускать как есть.