Если List
является конечной целью, как указано в ОП, то уже принятый ответ по-прежнему самый короткий и лучший.Однако я хочу предоставить альтернативы, использующие Java 8 Streams , которые дадут вам больше преимуществ, если будут частью конвейера для дальнейшей обработки.
Обтеканием результата функции .split (собственный массив) в поток, а затем преобразовать в список.
List<String> list =
Stream.of("a,b,c".split(","))
.collect(Collectors.toList());
Если важно, чтобы результат сохранялся как ArrayList
в соответствии с заголовком из OP, вы можете использовать другойCollector
метод:
ArrayList<String> list =
Stream.of("a,b,c".split(","))
.collect(Collectors.toCollection(ArrayList<String>::new));
Или с помощью API синтаксического анализа RegEx:
ArrayList<String> list =
Pattern.compile(",")
.splitAsStream("a,b,c")
.collect(Collectors.toCollection(ArrayList<String>::new));
Обратите внимание, что вы все равно можете оставить вместо переменной list
типизированную как List<String>
ArrayList<String>
.Общий интерфейс для List
все еще выглядит достаточно похожим на реализацию ArrayList
.
Сами по себе эти примеры кода, кажется, не добавляют много (кроме большего набора текста), но если вы планируетенапример, этот ответ о преобразовании строки в список длинных демонстрирует, что потоковый API действительно мощен, позволяя конвейеризовать ваши операции одну за другой.
Ради, вы знаете, полноты.