Kort til strengkonvertering i Java

1. Oversigt

I denne vejledning fokuserer vi på konvertering fra a Kort til en Snor og den anden vej rundt.

Først ser vi, hvordan vi opnår disse ved hjælp af kernemetoder til Java, og bagefter bruger vi nogle tredjepartsbiblioteker.

2. Grundlæggende Kort Eksempel

I alle eksempler skal vi bruge det samme Kort implementering:

KortordByKey = nyt HashMap (); wordsByKey.put (1, "en"); wordsByKey.put (2, "to"); wordsByKey.put (3, "tre"); wordsByKey.put (4, "fire");

3. Konverter a Kort til en Snor af Iterating

Lad os gentage alle nøglerne i vores Kort og for hver af dem tilføjer nøgle-værdi-kombinationen til vores resulterende StringBuilder objekt.

Til formateringsformål kan vi pakke resultatet i krøllede parenteser:

public String convertWithIteration (Map map) {StringBuilder mapAsString = new StringBuilder ("{"); for (Heltalsnøgle: map.keySet ()) {mapAsString.append (key + "=" + map.get (key) + ","); } mapAsString.delete (mapAsString.length () - 2, mapAsString.length ()). tilføj ("}"); returner mapAsString.toString (); }

For at kontrollere, om vi konverterede vores Kort lad os køre følgende test korrekt:

@Test offentlig ugyldighed givenMap_WhenUsingIteration_ThenResultingStringIsCorrect () {String mapAsString = MapToString.convertWithIteration (wordsByKey); Assert.assertEquals ("{1 = en, 2 = to, 3 = tre, 4 = fire}", mapAsString); }

4. Konverter a Kort til en Snor Brug af Java Streams

For at udføre konvertering ved hjælp af streams skal vi først oprette en stream ud af den tilgængelige Kort nøgler.

For det andet kortlægger vi hver nøgle til en menneskelig læsbar Snor.

Endelig slutter vi os til disse værdier, og af nemheds skyld tilføjer vi nogle formateringsregler ved hjælp af Collectors.joining () metode:

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

5. Konverter a Kort til en Snor Brug af Guava

Lad os tilføje Guava til vores projekt og se, hvordan vi kan opnå konvertering i en enkelt kodelinje:

 com.google.guava guava 27.0.1-jre 

For at udføre konverteringen ved hjælp af guavas Snedker klasse, skal vi definere en separator mellem forskellige Kort poster og en separator mellem nøgler og værdier:

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

6. Konverter a Kort til en Snor Brug af Apache Commons

For at bruge Apache Commons, lad os først tilføje følgende afhængighed:

 org.apache.commons commons-collection4 4.2 

Tilslutningen er meget ligetil - vi skal bare ringe til StringUtils.tilslut metode:

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

En særlig omtale går til debugPrint metode tilgængelig i Apache Commons. Det er meget nyttigt til fejlfindingsformål.

Når vi ringer:

MapUtils.debugPrint (System.out, "Kort som streng", wordsByKey);

Fejlretningsteksten skrives til konsollen:

Kort som streng = {1 = en java.lang.Streng 2 = to java.lang.Streng 3 = tre java.lang.Streng 4 = fire java.lang.String} java.util.HashMap

7. Konverter a Snor til en Kort Brug af streams

For at udføre konvertering fra en Snor til en Kort, lad os definere, hvor vi skal dele på, og hvordan du udtrækker nøgler og værdier:

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

8. Konverter a Snor til en Kort Brug af Guava

En mere kompakt version af ovenstående er at stole på, at Guava udfører opsplitningen og konverteringen for os i en proces med en linje:

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

9. Konklusion

I denne vejledning så vi, hvordan man konverterer en Kort til en Snor og omvendt ved hjælp af både grundlæggende Java-metoder og tredjepartsbiblioteker.

Implementeringen af ​​alle disse eksempler kan findes på GitHub.