Jeśli a List
jest celem końcowym, jak stwierdził PO, to już zaakceptowana odpowiedź jest wciąż najkrótsza i najlepsza. Chciałbym jednak przedstawić alternatywne rozwiązania wykorzystujące strumienie Java 8 , które przyniosą więcej korzyści, jeśli będą częścią potoku do dalszego przetwarzania.
Zawijając wynik funkcji .split (macierz macierzysta) do strumienia, a następnie konwertując na listę.
List<String> list =
Stream.of("a,b,c".split(","))
.collect(Collectors.toList());
Jeśli ważne jest, aby wynik był zapisany jak ArrayList
w tytule z PO, możesz użyć innej Collector
metody:
ArrayList<String> list =
Stream.of("a,b,c".split(","))
.collect(Collectors.toCollection(ArrayList<String>::new));
Lub używając interfejsu analizującego RegEx:
ArrayList<String> list =
Pattern.compile(",")
.splitAsStream("a,b,c")
.collect(Collectors.toCollection(ArrayList<String>::new));
Zauważ, że nadal możesz rozważyć pozostawienie list
zmiennej wpisanej jako List<String>
zamiast ArrayList<String>
. Ogólny interfejs dla List
nadal wygląda dość podobnie do ArrayList
implementacji.
Same przykłady w kodzie nie wydają się dużo dodawać (oprócz więcej pisania), ale jeśli planujesz zrobić więcej, na przykład ta odpowiedź na temat konwersji ciągu znaków na listę długich , interfejs API przesyłania strumieniowego jest naprawdę potężny, ponieważ umożliwia aby potokować swoje operacje jedna po drugiej.
Ze względu na kompletność.