Konverzia mapy na reťazec v Jave

1. Prehľad

V tomto tutoriále sa zameriame na prevod z Mapa do a String a naopak.

Najprv uvidíme, ako to dosiahnuť pomocou základných metód Java, a potom použijeme niektoré knižnice tretích strán.

2. Základné Mapa Príklad

Vo všetkých príkladoch použijeme to isté Mapa implementácia:

Mapové slováByKey = nový HashMap (); wordsByKey.put (1, "one"); wordsByKey.put (2, "two"); wordsByKey.put (3, "three"); wordsByKey.put (4, „four“);

3. Premeniť a Mapa do a String iteráciou

Poďme iterovať cez všetky kľúče v našom Mapa a pre každú z nich pripojte kombináciu kľúč - hodnota k nášmu výsledku StringBuilder objekt.

Pre účely formátovania môžeme výsledok zabaliť do zložených zátvoriek:

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

Aby sme skontrolovali, či sme premenili našu Mapa správne, spustime nasledujúci test:

@Test public void givenMap_WhenUsingIteration_ThenResultingStringIsCorrect () {String mapAsString = MapToString.convertWithIteration (wordsByKey); Assert.assertEquals ("{1 = jeden, 2 = dva, 3 = tri, 4 = štyri}", mapAsString); }

4. Premeniť a Mapa do a String Používanie tokov Java

Ak chcete vykonať konverziu pomocou streamov, najskôr musíme vytvoriť stream z dostupných zdrojov Mapa kľúče.

Po druhé, každý kľúč mapujeme tak, aby bol čitateľný pre človeka String.

Nakoniec sa k týmto hodnotám pripájame a kvôli pohodlnosti pridávame niektoré pravidlá formátovania pomocou znaku Collectors.joining () metóda:

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

5. Premeniť a Mapa do a String Pomocou Guava

Poďme do nášho projektu pridať Guavu a uvidíme, ako môžeme dosiahnuť konverziu v jednom riadku kódu:

 com.google.guava guava 27.0.1-jre 

Prevedenie pomocou Guavy Stolár triedy, musíme definovať oddeľovač medzi rôznymi Mapa položky a oddeľovač medzi kľúčmi a hodnotami:

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

6. Premeniť a Mapa do a String Používanie Apache Commons

Ak chcete používať Apache Commons, najskôr pridajte túto závislosť:

 org.apache.commons commons-collections4 4.2 

Spojenie je veľmi priame - stačí zavolať StringUtils.join metóda:

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

Jedna osobitná zmienka sa týka debugPrint metóda dostupná v Apache Commons. Je to veľmi užitočné na účely ladenia.

Keď voláme:

MapUtils.debugPrint (System.out, "Mapovať ako reťazec", wordsByKey);

Ladiaci text sa zapíše do konzoly:

Mapovať ako reťazec = {1 = jedna java.lang.String 2 = dve java.lang.String 3 = tri java.lang.String 4 = štyri java.lang.String} java.util.HashMap

7. Premeniť a String do a Mapa Používanie streamov

Ak chcete vykonať konverziu z a String do a Mapa, definujme, kde sa máme rozdeliť a ako extrahovať kľúče a hodnoty:

verejná mapa convertWithStream (String mapAsString) {Map map = Arrays.stream (mapAsString.split (",")) .map (entry -> entry.split ("=")) .collect (Collectors.toMap (entry -> entry) [0], položka -> položka [1])); spiatočná mapa; }

8. Premeniť a String do a Mapa Pomocou Guava

Kompaktnejšia verzia vyššie uvedeného je spoľahnúť sa na to, že spoločnosť Guava urobí za nás rozdelenie a konverziu v jednom riadku:

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

9. Záver

V tomto tutoriáli sme videli, ako previesť a Mapa do a String a naopak pomocou oboch základných metód Java a knižníc tretích strán.

Implementáciu všetkých týchto príkladov nájdete na GitHub.


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