6

Как преобразовать строку, разделённую запятыми, в список?

1

Вопрос:

Есть ли в Java встроенный метод, который позволяет конвертировать строку с разделителями в контейнер (например, массив, список или вектор)? Или мне необходимо написать собственный код для этого?

String commaSeparated = "item1 , item2 , item3";
List<String> items = // метод, который конвертирует указанную строку в список??

5 ответ(ов)

11

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

List<String> items = Arrays.asList(str.split("\\s*,\\s*"));

В приведенном коде строка разбивается на разделителе, определенном как: ноль или более пробелов, литерал запятой, ноль или более пробелов. Это помещает слова в список и убирает лишние пробелы между словами и запятыми.


Обратите внимание, что этот код возвращает лишь обертку на массив: вы НЕ МОЖЕТЕ, например, использовать метод .remove() на полученном List. Если вам нужен фактический ArrayList, вам необходимо дополнительно использовать new ArrayList<String>(items).

0

Ваш код разбивается на два шага:

  1. Вы используете метод split для разделения строки, содержащей элементы, разделенные запятыми. Регулярное выражение "\\s*,\\s*" позволяет учитывать пробелы до и после запятой. В результате вы получаете массив строк:

    String [] items = commaSeparated.split("\\s*,\\s*");
    
  2. Затем вы преобразуете полученный массив в список с помощью метода Arrays.asList, что позволяет вам работать с элементами как с коллекцией:

    List<String> container = Arrays.asList(items);
    

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

0

Вы можете использовать следующий код для преобразования строки, содержащей элементы, разделенные запятыми, в список строк, убрав пробелы:

List<String> items = Stream.of(commaSeparated.split(","))
     .map(String::trim)
     .collect(Collectors.toList());

Этот фрагмент кода работает следующим образом:

  1. commaSeparated.split(",") — разбиение исходной строки на массив строк, используя запятую в качестве разделителя.
  2. Stream.of(...) — создание потока (Stream) из полученного массива строк.
  3. .map(String::trim) — применение метода trim() к каждому элементу потока, чтобы удалить лишние пробелы по краям строк.
  4. .collect(Collectors.toList()) — сбор всех обработанных строк в список.

Таким образом, вы получите список строк items, где каждый элемент содержит только нужный текст без лишних пробелов.

0

Вот еще один пример, как преобразовать CSV в ArrayList на Java:

String str = "string,with,comma";
ArrayList<String> aList = new ArrayList<>(Arrays.asList(str.split(",")));
for(int i = 0; i < aList.size(); i++) {
    System.out.println(" --> " + aList.get(i));
}

Этот код выводит:

 --> string
 --> with
 --> comma

В этом примере мы сначала создаем строку, разделенную запятыми, и затем используем метод split(","), чтобы разбить ее на массив строк. Этот массив передается в конструктор ArrayList, что позволяет нам получить список. Затем с помощью цикла for мы перебираем элементы списка и выводим их на экран.

0

Ваш код выглядит корректным для разделения строки, содержащей значения, разделённые запятыми.

Вы создаёте список строк с использованием метода Arrays.asList() в сочетании с методом split(), который разбивает строку по запятой. Например, если у вас есть строка commaSeparated, содержащая элементы, разделённые запятыми, то ваш код преобразует её в список строк.

Вот пример:

String commaSeparated = "item1,item2,item3";
List<String> items = Arrays.asList(commaSeparated.split(","));

Этот код создаст List<String>, содержащий три элемента: "item1", "item2" и "item3".

Таким образом, ваш подход будет работать отлично!

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