Как преобразовать строку, разделённую запятыми, в список?
Вопрос:
Есть ли в Java встроенный метод, который позволяет конвертировать строку с разделителями в контейнер (например, массив, список или вектор)? Или мне необходимо написать собственный код для этого?
String commaSeparated = "item1 , item2 , item3";
List<String> items = // метод, который конвертирует указанную строку в список??
5 ответ(ов)
Преобразование строки, разделенной запятыми, в список
List<String> items = Arrays.asList(str.split("\\s*,\\s*"));
В приведенном коде строка разбивается на разделителе, определенном как: ноль или более пробелов, литерал запятой, ноль или более пробелов
. Это помещает слова в список и убирает лишние пробелы между словами и запятыми.
Обратите внимание, что этот код возвращает лишь обертку на массив: вы НЕ МОЖЕТЕ, например, использовать метод .remove()
на полученном List
. Если вам нужен фактический ArrayList
, вам необходимо дополнительно использовать new ArrayList<String>(items)
.
Ваш код разбивается на два шага:
Вы используете метод
split
для разделения строки, содержащей элементы, разделенные запятыми. Регулярное выражение"\\s*,\\s*"
позволяет учитывать пробелы до и после запятой. В результате вы получаете массив строк:String [] items = commaSeparated.split("\\s*,\\s*");
Затем вы преобразуете полученный массив в список с помощью метода
Arrays.asList
, что позволяет вам работать с элементами как с коллекцией:List<String> container = Arrays.asList(items);
Таким образом, в результате вы получите список строк, содержащий элементы из исходной строки, разделенные запятыми.
Вы можете использовать следующий код для преобразования строки, содержащей элементы, разделенные запятыми, в список строк, убрав пробелы:
List<String> items = Stream.of(commaSeparated.split(","))
.map(String::trim)
.collect(Collectors.toList());
Этот фрагмент кода работает следующим образом:
commaSeparated.split(",")
— разбиение исходной строки на массив строк, используя запятую в качестве разделителя.Stream.of(...)
— создание потока (Stream) из полученного массива строк..map(String::trim)
— применение методаtrim()
к каждому элементу потока, чтобы удалить лишние пробелы по краям строк..collect(Collectors.toList())
— сбор всех обработанных строк в список.
Таким образом, вы получите список строк items
, где каждый элемент содержит только нужный текст без лишних пробелов.
Вот еще один пример, как преобразовать 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
мы перебираем элементы списка и выводим их на экран.
Ваш код выглядит корректным для разделения строки, содержащей значения, разделённые запятыми.
Вы создаёте список строк с использованием метода Arrays.asList()
в сочетании с методом split()
, который разбивает строку по запятой. Например, если у вас есть строка commaSeparated
, содержащая элементы, разделённые запятыми, то ваш код преобразует её в список строк.
Вот пример:
String commaSeparated = "item1,item2,item3";
List<String> items = Arrays.asList(commaSeparated.split(","));
Этот код создаст List<String>
, содержащий три элемента: "item1", "item2" и "item3".
Таким образом, ваш подход будет работать отлично!
Как разделить строку в Java?
Преобразование 'ArrayList<String>' в 'String[]' в Java
Инициализация ArrayList в одну строчку
Как создать строку Java из содержимого файла?
Как инициализировать значения HashSet при создании?