Kart til strengkonvertering i Java

1. Oversikt

I denne opplæringen vil vi fokusere på konvertering fra a Kart til en String og omvendt.

Først skal vi se hvordan vi kan oppnå disse ved hjelp av kjernemetoder for Java, og etterpå vil vi bruke noen tredjepartsbiblioteker.

2. Grunnleggende Kart Eksempel

I alle eksempler skal vi bruke det samme Kart gjennomføring:

KartordByKey = nytt HashMap (); wordsByKey.put (1, "one"); wordsByKey.put (2, "to"); wordsByKey.put (3, "tre"); wordsByKey.put (4, "fire");

3. Konverter a Kart til en String av Iterating

La oss gjenta alle tastene i vår Kart og for hver av dem, legg nøkkelverdikombinasjonen til vår resulterende StringBuilder gjenstand.

For formateringsformål kan vi pakke inn resultatet i krøllete parenteser:

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 (); }

For å sjekke om vi konverterte vår Kart riktig, la oss kjøre følgende test:

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

4. Konverter a Kart til en String Bruke Java Streams

For å utføre konvertering ved hjelp av strømmer, må vi først opprette en strøm ut av tilgjengelig Kart nøklene.

For det andre kartlegger vi hver nøkkel til en lesbar for mennesker String.

Til slutt slutter vi oss til disse verdiene, og for enkelhets skyld legger vi til noen formateringsregler ved hjelp av Collectors.joining () metode:

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

5. Konverter a Kart til en String Bruke Guava

La oss legge til Guava i prosjektet vårt og se hvordan vi kan oppnå konvertering i en enkelt kodelinje:

 com.google.guava guava 27.0.1-jre 

For å utføre konverteringen ved hjelp av Guava Snekker klasse, må vi definere en skilletegn mellom forskjellige Kart oppføringer og en skilletegn mellom nøkler og verdier:

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

6. Konverter a Kart til en String Bruke Apache Commons

For å bruke Apache Commons, la oss først legge til følgende avhengighet:

 org.apache.commons commons-collection4 4.2 

Sammenføyningen er veldig grei - vi trenger bare å ringe StringUtils. sammenføye metode:

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

En spesiell omtale går til debugPrint metoden tilgjengelig i Apache Commons. Det er veldig nyttig for feilsøkingsformål.

Når vi ringer:

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

Feilsøkingsteksten blir skrevet til konsollen:

Kart 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 String til en Kart Bruke strømmer

For å utføre konvertering fra en String til en Kartla oss definere hvor vi skal dele på og hvordan du trekker ut nøkler og verdier:

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

8. Konverter a String til en Kart Bruke Guava

En mer kompakt versjon av det ovennevnte er å stole på at Guava gjør splitting og konvertering for oss i en en-linjeprosess:

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

9. Konklusjon

I denne opplæringen så vi hvordan vi konverterer en Kart til en String og omvendt ved å bruke både kjerne-Java-metoder og tredjepartsbiblioteker.

Implementeringen av alle disse eksemplene finner du på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found