Zuordnung von Zeichenfolgen zu Zeichenfolgen in Java

1. Übersicht

In diesem Tutorial konzentrieren wir uns auf die Konvertierung von einer Map in einen String und umgekehrt.

Zuerst werden wir sehen, wie dies mit den wichtigsten Java-Methoden erreicht werden kann, und anschließend werden wir einige Bibliotheken von Drittanbietern verwenden.

2. Grund Karte Beispiel

In allen Beispielen verwenden wir dieselbe Map- Implementierung:

Map wordsByKey = new HashMap(); wordsByKey.put(1, "one"); wordsByKey.put(2, "two"); wordsByKey.put(3, "three"); wordsByKey.put(4, "four");

3. Konvertieren Sie eine Map durch Iterieren in einen String

Lassen Sie uns alle Schlüssel in unserer Map durchlaufen und für jeden von ihnen die Schlüssel-Wert-Kombination an unser resultierendes StringBuilder- Objekt anhängen .

Zu Formatierungszwecken können wir das Ergebnis in geschweifte Klammern setzen:

public String convertWithIteration(Map map) { StringBuilder mapAsString = new StringBuilder("{"); for (Integer key : map.keySet()) { mapAsString.append(key + "=" + map.get(key) + ", "); } mapAsString.delete(mapAsString.length()-2, mapAsString.length()).append("}"); return mapAsString.toString(); }

Führen Sie den folgenden Test durch, um zu überprüfen, ob wir unsere Karte korrekt konvertiert haben :

@Test public void givenMap_WhenUsingIteration_ThenResultingStringIsCorrect() { String mapAsString = MapToString.convertWithIteration(wordsByKey); Assert.assertEquals("{1=one, 2=two, 3=three, 4=four}", mapAsString); }

4. Konvertieren Sie eine Map mithilfe von Java-Streams in einen String

Um eine Konvertierung mit Streams durchzuführen, müssen wir zunächst einen Stream aus den verfügbaren Map- Schlüsseln erstellen .

Zweitens ordnen wir jeden Schlüssel einem lesbaren String zu.

Schließlich verbinden wir diese Werte und fügen der Einfachheit halber einige Formatierungsregeln mit der Collectors.joining () -Methode hinzu:

public String convertWithStream(Map map) { String mapAsString = map.keySet().stream() .map(key -> key + "=" + map.get(key)) .collect(Collectors.joining(", ", "{", "}")); return mapAsString; }

5. Konvertieren Sie eine Karte mit Guava in einen String

Fügen wir Guava zu unserem Projekt hinzu und sehen, wie wir die Konvertierung in einer einzigen Codezeile erreichen können:

 com.google.guava guava 27.0.1-jre 

Um die Konvertierung mit der Joiner- Klasse von Guava durchzuführen , müssen Sie ein Trennzeichen zwischen verschiedenen Map- Einträgen und ein Trennzeichen zwischen Schlüsseln und Werten definieren:

public String convertWithGuava(Map map) { return Joiner.on(",").withKeyValueSeparator("=").join(map); }

6. Konvertieren Sie eine Map mit Apache Commons in einen String

Um Apache Commons zu verwenden, fügen wir zuerst die folgende Abhängigkeit hinzu:

 org.apache.commons commons-collections4 4.2 

Die Verknüpfung ist sehr einfach - wir müssen nur die StringUtils.join- Methode aufrufen :

public String convertWithApache(Map map) { return StringUtils.join(map); }

Eine besondere Erwähnung gilt der in Apache Commons verfügbaren debugPrint- Methode. Es ist sehr nützlich für Debugging-Zwecke.

Wenn wir anrufen:

MapUtils.debugPrint(System.out, "Map as String", wordsByKey);

Der Debug-Text wird in die Konsole geschrieben:

Map as String = { 1 = one java.lang.String 2 = two java.lang.String 3 = three java.lang.String 4 = four java.lang.String } java.util.HashMap

7. Konvertieren Sie eine Zeichenfolge mithilfe von Streams in eine Map

Um eine Konvertierung von einem String in eine Map durchzuführen , definieren wir, wo aufgeteilt und wie Schlüssel und Werte extrahiert werden sollen:

public Map convertWithStream(String mapAsString) { Map map = Arrays.stream(mapAsString.split(",")) .map(entry -> entry.split("=")) .collect(Collectors.toMap(entry -> entry[0], entry -> entry[1])); return map; }

8. Konvertieren Sie einen String mit Guava in eine Map

Eine kompaktere Version des oben Gesagten besteht darin, sich darauf zu verlassen, dass Guava die Aufteilung und Konvertierung für uns in einem einzeiligen Prozess vornimmt:

public Map convertWithGuava(String mapAsString) { return Splitter.on(',').withKeyValueSeparator('=').split(mapAsString); }

9. Fazit

In diesem Tutorial haben wir gesehen, wie eine Map in einen String konvertiert wird und umgekehrt, indem sowohl Java-Kernmethoden als auch Bibliotheken von Drittanbietern verwendet werden.

Die Implementierung all dieser Beispiele finden Sie auf GitHub.