Konvertieren Sie eine durch Kommas getrennte Zeichenfolge in eine Liste in Java

1. Übersicht

In diesem Tutorial sehen wir uns an, wie Sie einen durch Kommas getrennten String in eine Liste von Strings konvertieren . Zusätzlich wandeln wir eine durch Kommas getrennte Zeichenfolge von Ganzzahlen in eine Liste von Ganzzahlen um .

2. Abhängigkeiten

Für einige der Methoden, die wir für unsere Konvertierungen verwenden, sind die Bibliotheken Apache Commons Lang 3 und Guava erforderlich. Fügen wir sie also unserer Datei pom.xml hinzu :

 org.apache.commons commons-lang3 3.8.1   com.google.guava guava 27.0.1-jre 

3. Unser Beispiel definieren

Bevor wir beginnen, definieren wir zwei Eingabezeichenfolgen, die wir in unseren Beispielen verwenden werden. Die erste Zeichenfolge, Länder, enthält mehrere durch Komma getrennte Zeichenfolgen, und die zweite Zeichenfolge, Ränge, enthält durch Komma getrennte Zahlen:

String countries = "Russia,Germany,England,France,Italy"; String ranks = "1,2,3,4,5,6,7";

In diesem Tutorial konvertieren wir die obigen Zeichenfolgen in Listen mit Zeichenfolgen und Ganzzahlen, in denen wir Folgendes speichern:

List convertedCountriesList; List convertedRankList;

Nachdem wir unsere Konvertierungen durchgeführt haben, sind die erwarteten Ergebnisse:

List expectedCountriesList = Arrays.asList("Russia", "Germany", "England", "France", "Italy"); List expectedRanksList = Arrays.asList(1, 2, 3, 4, 5, 6, 7);

4. Core Java

In unserer ersten Lösung konvertieren wir eine Zeichenfolge mithilfe von Java in eine Liste von Zeichenfolgen und Ganzzahlen.

Zuerst teilen wir unsere Zeichenfolge mit split, einer Dienstprogrammmethode für die String- Klasse, in ein Array von Zeichenfolgen auf . Dann verwenden wir Arrays.asList für unser neues String-Array, um es in eine Liste von Strings zu konvertieren:

List convertedCountriesList = Arrays.asList(countries.split(",", -1));

Lassen Sie uns nun unsere Zahlenfolge in eine Liste von ganzen Zahlen umwandeln.

Wir werden die Split- Methode verwenden, um unsere Zahlenzeichenfolge in ein Array von Zeichenfolgen umzuwandeln. Dann konvertieren wir jede Zeichenfolge in unserem neuen Array in eine Ganzzahl und fügen sie unserer Liste hinzu :

String[] convertedRankArray = ranks.split(","); List convertedRankList = new ArrayList(); for (String number : convertedRankArray) { convertedRankList.add(Integer.parseInt(number.trim())); }

In beiden Fällen verwenden wir die Split- Utility-Methode aus der String- Klasse, um die durch Kommas getrennte Zeichenfolge in ein String-Array aufzuteilen.

Beachten Sie, dass die überladene Split - Methode verwendet , um unsere konvertieren Länder Zeichenfolge enthält den zweiten Parameter Grenze , für die wir den Wert als vorgesehen -1. Dies gibt an, dass das Trennmuster so oft wie möglich angewendet werden soll.

Die Split - Methode verwenden wir unsere Reihe von ganzen Zahlen zu spalten ( Reihen ) Verwendungen Null als Grenze , und so ignoriert er die leeren Saiten, während die Spaltung von dem verwendeten Ländern Zeichenfolge leere Strings in der zurückgegebenen Array behält.

5. Java-Streams

Jetzt implementieren wir dieselben Konvertierungen mithilfe der Java Stream-API.

Zuerst konvertieren wir den String unseres Landes mithilfe der split- Methode in der String- Klasse in ein Array von Strings . Dann verwenden wir die Stream- Klasse, um unser Array in eine Liste von Zeichenfolgen zu konvertieren:

List convertedCountriesList = Stream.of(countries.split(",", -1)) .collect(Collectors.toList());

Mal sehen, wie wir unsere Zahlenfolge mithilfe eines Streams in eine Liste von Ganzzahlen konvertieren .

Wieder werden wir zunächst die Reihe von Zahlen in ein Array von Zeichenketten mit der konvertieren Split auf ein Verfahren und wandeln das resultierende Array - Stream von String unter Verwendung der von () Methode in der Stream - Klasse.

Dann werden wir die führenden und nachfolgenden Leerzeichen von jedem trimmen String auf der Stream - mit Karte (String: : trim) .

Als Nächstes wenden wir map (Integer :: parseInt) auf unseren Stream an, um jede Zeichenfolge in unserem Stream in eine Ganzzahl zu konvertieren .

Und schließlich rufen wir collect (Collectors.toList ()) im Stream auf, um ihn in eine Ganzzahlliste zu konvertieren:

List convertedRankList = Stream.of(ranks.split(",")) .map(String::trim) .map(Integer::parseInt) .collect(Collectors.toList());

6. Apache Commons Lang

In dieser Lösung verwenden wir die Apache Commons Lang3-Bibliothek, um unsere Konvertierungen durchzuführen. Apache Commons Lang3 bietet verschiedene Hilfsfunktionen zum Bearbeiten von Java-Kernklassen.

Zuerst teilen wir unseren String mit StringUtils.splitPreserveAllTokens in ein Array von Strings auf . Anschließend konvertieren wir unser neues String-Array mithilfe der Arrays.asList- Methode in eine Liste :

List convertedCountriesList = Arrays.asList(StringUtils.splitPreserveAllTokens(countries, ","));

Lassen Sie uns nun unsere Zahlenfolge in eine Liste von ganzen Zahlen umwandeln.

Wir werden wieder die StringUtils.split- Methode verwenden, um ein Array von Strings aus unserem String zu erstellen. Dann konvertieren wir jede Zeichenfolge in unserem neuen Array mit Integer.parseInt in eine Ganzzahl und fügen die konvertierte Ganzzahl unserer Liste hinzu:

String[] convertedRankArray = StringUtils.split(ranks, ","); List convertedRankList = new ArrayList(); for (String number : convertedRankArray) { convertedRankList.add(Integer.parseInt(number.trim())); } 

In diesem Beispiel haben wir die splitPreserveAllTokens- Methode verwendet, um die Zeichenfolge unserer Länder zu teilen , während wir die split- Methode verwendet haben, um die Zeichenfolge unserer Ränge zu teilen .

Obwohl diese beiden Funktionen die Zeichenfolge in ein Array aufteilen , behält splitPreserveAllTokens alle Token bei, einschließlich der leeren Zeichenfolgen, die durch benachbarte Trennzeichen erstellt wurden, während die split- Methode die leeren Zeichenfolgen ignoriert .

Wenn wir also leere Zeichenfolgen haben, die in unsere Liste aufgenommen werden sollen, sollten wir splitPreserveAllTokens anstelle von split verwenden .

7. Guave

Schließlich verwenden wir die Guava-Bibliothek, um unsere Zeichenfolgen in die entsprechenden Listen zu konvertieren.

Um unsere Länderzeichenfolge zu konvertieren , rufen wir zuerst Splitter.on mit einem Komma als Parameter auf, um anzugeben, auf welches Zeichen unsere Zeichenfolge aufgeteilt werden soll.

Then, we'll use the trimResults method on our Splitter instance. This will ignore all leading and trailing white spaces from the created substrings.

Finally, we'll use the splitToList method to split our input string and convert it to a list:

List convertedCountriesList = Splitter.on(",") .trimResults() .splitToList(countries);

Now, let's convert the string of numbers to a list of integers.

We'll again convert the string of numbers into a list of stringsusing the same process we followed above.

Then, we'll use the Lists.transform method, which accepts our list of strings as the first parameter an implementation of the Function interface as the second parameter.

Die Implementierung der Funktionsschnittstelle konvertiert jede Zeichenfolge in unserer Liste in eine Ganzzahl:

List convertedRankList = Lists.transform(Splitter.on(",") .trimResults() .splitToList(ranks), new Function() { @Override public Integer apply(String input) { return Integer.parseInt(input.trim()); } }); 

8. Fazit

In diesem Artikel haben wir durch Kommas getrennte Zeichenfolgen in eine Liste von Zeichenfolgen und eine Liste von Ganzzahlen konvertiert . Wir können jedoch ähnlichen Prozessen folgen, um einen String in eine Liste beliebiger primitiver Datentypen zu konvertieren .

Wie immer ist der Code aus diesem Artikel auf Github verfügbar.