Преобразование массива строк в массив целых чисел в Java

Научитесь преобразовывать указанный массив строк в массив значений int или Integer с помощью потоков Java 8. Мы также научимся обрабатывать недопустимые значения, которые не могут быть преобразованы в целые числа.

1. Преобразование из String[] в int[]

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

При таком подходе мы перебираем поток массива строк, преобразуем каждую строку в значение типа int с помощью Integer::parseInt и собираем значения типа int в новый массив.

Обратите внимание, что мы используем операцию mapToInt(), которая гарантирует, что мы получим только значения типа int, которые будут собраны с помощью метода toArray().

String[] strArray = new String[] {"1", "2", "3"};int[] intArray = Arrays.stream(strArray).mapToInt(Integer::parseInt).toArray();System.out.println(Arrays.toString(intArray)); //Prints [1, 2, 3]

2. Преобразование из String[] в Integer[]

Преобразование в массив Integer очень похоже на массив int, за исключением того, что не используется метод mapToInt(), который возвращает массив int. Вместо этого мы используем метод map(), который возвращает типы Object и собирает такие целые числа в новый массив Integer. Объявление типа массива было дано в методе toArray(Integer[]::new).

String[] strArray = new String[] {"1", "2", "3"};Integer[] integerArray = Arrays.stream(strArray).map(Integer::parseInt).toArray(Integer[]::new);System.out.println(Arrays.toString(integerArray)); //Prints [1, 2, 3]

3. Обработка недопустимых значений

Когда мы получаем значения массива строк из удаленного API или базы данных, всегда есть вероятность получить неанализируемые значения. В этом случае мы должны обработать ParseException, когда мы анализируем значения строк в значения int, и определить значение по умолчанию для обозначения недопустимого значения в массиве целых чисел.

В следующем примере, когда мы получаем неанализируемое значение String, мы возвращаем целочисленное значение -1. Вы можете выбрать другое значение по умолчанию в зависимости от вашего варианта использования.

String[] invalidStrArray = new String[]{"1", "2", "3", "four", "5"};int[] intArray = Arrays.stream(invalidStrArray).mapToInt(str -> {try {return Integer.parseInt(str);} catch(NumberFormatException nfe) {return -1;}}).toArray();System.out.println(Arrays.toString(intArray)); //Prints [1, 2, 3, -1, 5]

4. Заключение

В этом коротком уроке Java мы научились преобразовывать массив String в массив Integer. Мы можем использовать эту технику для разбора и сбора строковых значений в другие числовые типы, такие как long или double.

Прокрутить вверх