Если List
конечная цель, как указано в ОП, является конечной целью, то уже принятый ответ остается самым коротким и лучшим. Однако я хочу предоставить альтернативы, использующие потоки Java 8 , которые дадут вам больше преимуществ, если они будут частью конвейера для дальнейшей обработки.
Оборачивая результат функции .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
реализацию.
Сами по себе эти примеры кода, кажется, не добавляют много (кроме большего набора текста), но если вы планируете делать больше, как, например, этот ответ о преобразовании String в List of Longs , потоковый API действительно мощный, позволяя направлять ваши операции один за другим.
Ради, вы знаете, полноты.