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.