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

Преобразование карты в массив, список или набор в Java

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

Задача: Сумма двух чисел

Напишите функцию twoSum. Которая получает массив целых чисел nums и целую сумму target, а возвращает индексы двух чисел, сумма которых равна target. Любой набор входных данных имеет ровно одно решение, и вы не можете использовать один и тот же элемент дважды. Ответ можно возвращать в любом порядке...

ANDROMEDA

1. Обзор

Эта короткая статья покажет, как преобразовать значения карты в массив, список или набор , используя простую Java, а также быстрый пример на основе Guava .

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

2. Сопоставьте значения с массивом

Во-первых, давайте посмотрим на преобразование значений карты в массив с помощью простого java :

@Test
public void givenUsingCoreJava_whenMapValuesConvertedToArray_thenCorrect() {
Map<Integer, String> sourceMap = createMap();

Collection<String> values = sourceMap.values();
String[] targetArray = values.toArray(new String[0]);
}

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

3. Сопоставьте значения со списком

Затем давайте преобразуем значения карты в список, используя обычную Java:

@Test
public void givenUsingCoreJava_whenMapValuesConvertedToList_thenCorrect() {
Map<Integer, String> sourceMap = createMap();

List<String> targetList = new ArrayList<>(sourceMap.values());
}

И используя гуаву:

@Test
public void givenUsingGuava_whenMapValuesConvertedToList_thenCorrect() {
Map<Integer, String> sourceMap = createMap();

List<String> targetList = Lists.newArrayList(sourceMap.values());
}

4. Сопоставьте значения для установки

Наконец, давайте преобразуем значения карты в набор, используя простой java:

@Test
public void givenUsingCoreJava_whenMapValuesConvertedToS_thenCorrect() {
Map<Integer, String> sourceMap = createMap();

Set<String> targetSet = new HashSet<>(sourceMap.values());
}

5. Вывод

Как видите, все преобразования можно выполнить одной строкой, используя только стандартную библиотеку коллекций Java.

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