Toewijzen aan stringconversie in Java

1. Overzicht

In deze zelfstudie concentreren we ons op de conversie van een Kaart naar een Draad en andersom.

Eerst zullen we zien hoe we deze kunnen bereiken met behulp van Java-kernmethoden, en daarna zullen we enkele bibliotheken van derden gebruiken.

2. Basis Kaart Voorbeeld

In alle voorbeelden gaan we hetzelfde gebruiken Kaart implementatie:

Map wordsByKey = nieuwe HashMap (); wordsByKey.put (1, "een"); wordsByKey.put (2, "twee"); wordsByKey.put (3, "drie"); wordsByKey.put (4, "vier");

3. Converteer een Kaart naar een Draad door Iterating

Laten we alle sleutels in ons herhalen Kaart en voeg voor elk van hen de sleutel-waardecombinatie toe aan onze resulterende StringBuilder voorwerp.

Voor opmaakdoeleinden kunnen we het resultaat tussen accolades plaatsen:

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

Om te controleren of we onze Kaart correct, laten we de volgende test uitvoeren:

@Test openbare leegte gegevenMap_WhenUsingIteration_ThenResultingStringIsCorrect () {String mapAsString = MapToString.convertWithIteration (wordsByKey); Assert.assertEquals ("{1 = een, 2 = twee, 3 = drie, 4 = vier}", mapAsString); }

4. Converteer een Kaart naar een Draad Java Streams gebruiken

Om conversie uit te voeren met streams, moeten we eerst een stream maken uit de beschikbare streams Kaart sleutels.

Ten tweede brengen we elke sleutel in kaart in een door mensen leesbare Draad.

Ten slotte voegen we ons bij die waarden, en voor het gemak voegen we enkele opmaakregels toe met behulp van de Collectors.joining () methode:

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

5. Converteer een Kaart naar een Draad Guava gebruiken

Laten we Guava aan ons project toevoegen en kijken hoe we de conversie in een enkele regel code kunnen bereiken:

 com.google.guava guave 27.0.1-jre 

Om de conversie uit te voeren met behulp van Guava's Schrijnwerker klasse, moeten we een scheidingsteken definiëren tussen verschillende Kaart items en een scheidingsteken tussen sleutels en waarden:

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

6. Converteer een Kaart naar een Draad Apache Commons gebruiken

Om Apache Commons te gebruiken, moeten we eerst de volgende afhankelijkheid toevoegen:

 org.apache.commons commons-collections4 4.2 

Het samenvoegen is heel eenvoudig - we hoeven alleen maar het StringUtils.join methode:

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

Een speciale vermelding gaat naar de debugPrint methode beschikbaar in Apache Commons. Het is erg handig voor foutopsporingsdoeleinden.

Als we bellen:

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

De foutopsporingstekst wordt naar de console geschreven:

Toewijzen als String = {1 = één java.lang.String 2 = twee java.lang.String 3 = drie java.lang.String 4 = vier java.lang.String} java.util.HashMap

7. Converteer een Draad naar een Kaart Streams gebruiken

Om een ​​conversie uit te voeren vanaf een Draad naar een Kaart, laten we definiëren waar we op moeten splitsen en hoe sleutels en waarden moeten worden geëxtraheerd:

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

8. Converteer een Draad naar een Kaart Guava gebruiken

Een compactere versie van het bovenstaande is om op Guava te vertrouwen om de splitsing en conversie voor ons uit te voeren in een eenregelig proces:

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

9. Conclusie

In deze tutorial hebben we gezien hoe je een Kaart naar een Draad en andersom: het gebruik van zowel Java-kernmethoden als bibliotheken van derden.

De implementatie van al deze voorbeelden is te vinden op GitHub.