Skip to content

Commit b8dbc9d

Browse files
laurentiudmaibin
authored andcommitted
BAEL-2480 Java Map to String conversion (eugenp#6075)
* BAEL-2480 Java Map to String conversion * BAEL-2480 Java Map to String conversion * BAEL-2480 Java Map to String conversion * BAEL-2480 Java Map to String conversion
1 parent 9e71023 commit b8dbc9d

File tree

4 files changed

+126
-0
lines changed

4 files changed

+126
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.baeldung.convert;
2+
3+
import com.google.common.base.Joiner;
4+
import org.apache.commons.lang3.StringUtils;
5+
6+
import java.util.Map;
7+
import java.util.stream.Collectors;
8+
9+
public class MapToString {
10+
11+
public static String convertWithIteration(Map<Integer, ?> map) {
12+
StringBuilder mapAsString = new StringBuilder("{");
13+
for (Integer key : map.keySet()) {
14+
mapAsString.append(key + "=" + map.get(key) + ", ");
15+
}
16+
mapAsString.delete(mapAsString.length()-2, mapAsString.length()).append("}");
17+
return mapAsString.toString();
18+
}
19+
20+
public static String convertWithStream(Map<Integer, ?> map) {
21+
String mapAsString = map.keySet().stream()
22+
.map(key -> key + "=" + map.get(key))
23+
.collect(Collectors.joining(", ", "{", "}"));
24+
return mapAsString;
25+
}
26+
27+
public static String convertWithGuava(Map<Integer, ?> map) {
28+
return Joiner.on(",").withKeyValueSeparator("=").join(map);
29+
}
30+
31+
public static String convertWithApache(Map map) {
32+
return StringUtils.join(map);
33+
}
34+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.baeldung.convert;
2+
3+
import com.google.common.base.Splitter;
4+
5+
import java.util.Arrays;
6+
import java.util.Map;
7+
import java.util.stream.Collectors;
8+
9+
public class StringToMap {
10+
11+
public static Map<String, String> convertWithStream(String mapAsString) {
12+
Map<String, String> map = Arrays.stream(mapAsString.split(","))
13+
.map(entry -> entry.split("="))
14+
.collect(Collectors.toMap(entry -> entry[0], entry -> entry[1]));
15+
return map;
16+
}
17+
18+
public static Map<String, String> convertWithGuava(String mapAsString) {
19+
return Splitter.on(',').withKeyValueSeparator('=').split(mapAsString);
20+
}
21+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.baeldung.convert;
2+
3+
import org.apache.commons.collections4.MapUtils;
4+
import org.junit.Assert;
5+
import org.junit.jupiter.api.BeforeEach;
6+
import org.junit.jupiter.api.Test;
7+
8+
import java.util.HashMap;
9+
import java.util.Map;
10+
11+
public class MapToStringUnitTest {
12+
13+
private Map<Integer, String> wordsByKey = new HashMap<>();
14+
15+
@BeforeEach
16+
public void setup() {
17+
wordsByKey.clear();
18+
wordsByKey.put(1, "one");
19+
wordsByKey.put(2, "two");
20+
wordsByKey.put(3, "three");
21+
wordsByKey.put(4, "four");
22+
}
23+
24+
@Test
25+
public void givenMap_WhenUsingIteration_ThenResultingMapIsCorrect() {
26+
String mapAsString = MapToString.convertWithIteration(wordsByKey);
27+
Assert.assertEquals("{1=one, 2=two, 3=three, 4=four}", mapAsString);
28+
}
29+
30+
@Test
31+
public void givenMap_WhenUsingStream_ThenResultingMapIsCorrect() {
32+
String mapAsString = MapToString.convertWithStream(wordsByKey);
33+
Assert.assertEquals("{1=one, 2=two, 3=three, 4=four}", mapAsString);
34+
}
35+
36+
@Test
37+
public void givenMap_WhenUsingGuava_ThenResultingMapIsCorrect() {
38+
String mapAsString = MapToString.convertWithGuava(wordsByKey);
39+
Assert.assertEquals("1=one,2=two,3=three,4=four", mapAsString);
40+
}
41+
42+
@Test
43+
public void givenMap_WhenUsingApache_ThenResultingMapIsCorrect() {
44+
String mapAsString = MapToString.convertWithApache(wordsByKey);
45+
Assert.assertEquals("{1=one, 2=two, 3=three, 4=four}", mapAsString);
46+
MapUtils.debugPrint(System.out, "Map as String", wordsByKey);
47+
}
48+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.baeldung.convert;
2+
3+
import org.junit.Assert;
4+
import org.junit.jupiter.api.Test;
5+
6+
import java.util.Map;
7+
8+
public class StringToMapUnitTest {
9+
10+
@Test
11+
public void givenString_WhenUsingStream_ThenResultingStringIsCorrect() {
12+
Map<String, String> wordsByKey = StringToMap.convertWithStream("1=one,2=two,3=three,4=four");
13+
Assert.assertEquals(4, wordsByKey.size());
14+
Assert.assertEquals("one", wordsByKey.get("1"));
15+
}
16+
17+
@Test
18+
void givenString_WhenUsingGuava_ThenResultingStringIsCorrect() {
19+
Map<String, String> wordsByKey = StringToMap.convertWithGuava("1=one,2=two,3=three,4=four");
20+
Assert.assertEquals(4, wordsByKey.size());
21+
Assert.assertEquals("one", wordsByKey.get("1"));
22+
}
23+
}

0 commit comments

Comments
 (0)