Как из строки сделать массив java
Перейти к содержимому

Как из строки сделать массив java

  • автор:

Как преобразовать строку в массив java

Чтобы преобразовать строку в массив строк в Java, нужно использовать метод строки split() , передав туда регулярное выражение в качестве разделителя:

String text = "one two three"; String[] words = text.split(" "); System.out.println(Arrays.toString(words)); // => ["one", "two", "three"] 

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

Допустим, у нас есть список, и надо его преобразовать в массив. Как это сделать? Возьмем для примера список строк:

List list = new ArrayList<>(); list.add("Petya"); list.add("Vasya");

Мы хотим преобразовать его в массив:

String[] stringArray =

Сделаем это без сторонних библиотек средствами JDK. Начнем с 11 версии, дальше покажу способы на 8 версии, и потом метод с Generics.

Способ № 1 (JDK 11)

Итак, с 11 версии список в массив можно преобразовать вот так изящно:

String[] stringArray = list.toArray(String[]::new);

Способ № 2 (JDK 8)

В 8 версии можно сделать так (внимание, в скобках параметром указываем тип массива, а иначе результирующий массив будет типа Object[]):

String[] stringArray = list.toArray(new String[0]);

Заметьте, что в аргументе можно указать массив нулевой длины, главное, что есть тип. В этом случае будет создан и вернется новый массив нужной длины. Если же список помещается, то вернется тот, что в аргументе.

Способ № 3 с использованием stream() (JDK 8)

String[] stringArray = list.stream().toArray(String[]::new);

Метод для Generics

Допустим, надо написать общий метод для любого типа данных:

private static String[] listToArray(List list)

Проверим, что он работает. Создадим класс:

class Person < private String name; public Person(String name) < this.name = name; >public String toString() < return name; >>
@Test public void m4() < Listlist=new ArrayList<>(); list.add(new Person("Petya")); list.add(new Person("Vasya")); String[] stringArray = listToArray(list); assertThat(stringArray[0], is("Petya")); assertThat(stringArray[1], is("Vasya")); >

Преобразование Array в List

Теперь допустим у нас есть массив строк:

String[] stringArray = new String[];

Массив в List преобразуется так:

List list = Arrays.asList(stringArray);

Но полученный массив — фиксированного размера, в него нельзя добавлять и удалять элементы. Менять же элементы внутри можно, при этом изменения отразятся на массиве. И наоборот.

Чтобы получить обычный List, можно создать новый List на основе предыдущего:

new ArrayList(list);

Также метод не годится для преобразования массива примитивов в список, т.к. возьмет переданный массив в качестве первого объекта.

Преобразование массива примитивов в список List

Для примитивов проще использовать метод стримов boxed():

int[] ar=; List list= Arrays.stream(ar).boxed().toList();

Преобразование List в массив примитивов

List list = .. int[] arrayOfPrimitives = list.stream().mapToInt(i -> i).toArray();

Исходный код

Код примеров доступен на GitHub (в тестах).

Автор sysout Опубликовано 31.12.2019 06.12.2023 Рубрики Core Java

Добавить комментарий Отменить ответ

Прошу прощения: на комментарии временно не отвечаю.

Спарсить String в массив int — Java, как реализовать?

Chvalov

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

По дефолту, в джаве, массив приметивного типа, например int инициализируется нулями

results[i] = Integer.parseInt(items[i]); замени на results[i] = Integer.parseInt(items[i].trim());
Из-за пробелов Integer.parseInt(items[i]); бросает Exception.

Chvalov

Chvalov @Chvalov Автор вопроса

Eugene: Массив заполняется нулями если присутствует оператор new
Вячеслав Моров: теперь все работает, спасибо большое

Перевод String в массив чисел int

Есть ли функция, переводящая строку с численными значениями без запятой, разделенными пробелами, в массив int ?

Отслеживать
34.5k 15 15 золотых знаков 66 66 серебряных знаков 95 95 бронзовых знаков
задан 7 авг 2015 в 2:28
Екатерина Фомина Екатерина Фомина
63 1 1 золотой знак 1 1 серебряный знак 5 5 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Примерно как то так можно — рассплитить в массив строк по разделителю и преобразовать из строк в целочисленное:

public class Main < public static void main(String[] args)< String str = "11 34 3 45 23 5 67"; String strArr[] = str.split(" "); int numArr[] = new int[strArr.length]; for (int i = 0; i < strArr.length; i++) < numArr[i] = Integer.parseInt(strArr[i]); // System.out.println(numArr[i]); >> > 

В Java 8 можно сделать в одну строку:

String str = "11 34 3 45 23 5 67"; int[] numArr = Arrays.stream(str.split(" ")).mapToInt(Integer::parseInt).toArray(); 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *