Skip to content

Commit e62aba1

Browse files
authored
This commit related to the article BAEL-6877 (#14899)
This commit aims to add a new Java module "core-java-collections-maps-7"
1 parent ed2f323 commit e62aba1

4 files changed

Lines changed: 170 additions & 0 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
## Relevant Articles
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
<artifactId>core-java-collections-maps-7</artifactId>
7+
<name>core-java-collections-maps-7</name>
8+
<packaging>jar</packaging>
9+
10+
<parent>
11+
<artifactId>core-java-modules</artifactId>
12+
<groupId>com.baeldung.core-java-modules</groupId>
13+
<version>0.0.1-SNAPSHOT</version>
14+
</parent>
15+
16+
<properties>
17+
<spring.version>5.2.5.RELEASE</spring.version>
18+
</properties>
19+
<dependencies>
20+
<dependency>
21+
<groupId>com.fasterxml.jackson.core</groupId>
22+
<artifactId>jackson-databind</artifactId>
23+
<version>2.12.4</version>
24+
</dependency>
25+
<dependency>
26+
<groupId>org.openjdk.jmh</groupId>
27+
<artifactId>jmh-core</artifactId>
28+
<version>1.36</version>
29+
</dependency>
30+
<dependency>
31+
<groupId>com.google.code.gson</groupId>
32+
<artifactId>gson</artifactId>
33+
<version>2.8.9</version>
34+
</dependency>
35+
<dependency>
36+
<groupId>org.json</groupId>
37+
<artifactId>json</artifactId>
38+
<version>20230227</version>
39+
</dependency>
40+
<dependency>
41+
<groupId>junit</groupId>
42+
<artifactId>junit</artifactId>
43+
<version>4.13.1</version>
44+
<scope>test</scope>
45+
</dependency>
46+
<dependency>
47+
<groupId>org.junit.jupiter</groupId>
48+
<artifactId>junit-jupiter</artifactId>
49+
<version>5.8.1</version>
50+
<scope>test</scope>
51+
</dependency>
52+
<dependency>
53+
<groupId>org.junit.jupiter</groupId>
54+
<artifactId>junit-jupiter</artifactId>
55+
<version>5.8.1</version>
56+
<scope>test</scope>
57+
</dependency>
58+
<dependency>
59+
<groupId>junit</groupId>
60+
<artifactId>junit</artifactId>
61+
<version>4.13.1</version>
62+
<scope>test</scope>
63+
</dependency>
64+
<dependency>
65+
<groupId>org.junit.jupiter</groupId>
66+
<artifactId>junit-jupiter</artifactId>
67+
<version>5.8.1</version>
68+
<scope>test</scope>
69+
</dependency>
70+
<dependency>
71+
<groupId>junit</groupId>
72+
<artifactId>junit</artifactId>
73+
<version>4.13.1</version>
74+
<scope>test</scope>
75+
</dependency>
76+
</dependencies>
77+
78+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package com.baeldung.map;
2+
3+
import java.util.HashMap;
4+
import java.util.Map;
5+
6+
public class ConvertHashMapStringToHashMapObjectUsingtoString {
7+
public String name;
8+
public int age;
9+
10+
public ConvertHashMapStringToHashMapObjectUsingtoString(String name, int age) {
11+
this.name = name;
12+
this.age = age;
13+
}
14+
15+
public static ConvertHashMapStringToHashMapObjectUsingtoString deserializeCustomObject(String valueString) {
16+
if (valueString.startsWith("{") && valueString.endsWith("}")) {
17+
valueString = valueString.substring(1, valueString.length() - 1);
18+
String[] parts = valueString.split(",");
19+
String name = null;
20+
int age = -1;
21+
for (String part : parts) {
22+
String[] keyValue = part.split("=");
23+
if (keyValue.length == 2) {
24+
String key = keyValue[0].trim();
25+
String val = keyValue[1].trim();
26+
if (key.equals("name")) {
27+
name = val;
28+
} else if (key.equals("age")) {
29+
age = Integer.parseInt(val);
30+
}
31+
}
32+
}
33+
if (name != null && age >= 0) {
34+
return new ConvertHashMapStringToHashMapObjectUsingtoString(name, age);
35+
}
36+
}
37+
return new ConvertHashMapStringToHashMapObjectUsingtoString("", -1);
38+
}
39+
40+
public static void main(String[] args) {
41+
String hashMapString = "{key1={name=John, age=30}, key2={name=Alice, age=25}}";
42+
String keyValuePairs = hashMapString.replaceAll("[{}\\s]", "");
43+
String[] pairs = keyValuePairs.split(",");
44+
Map<String, ConvertHashMapStringToHashMapObjectUsingtoString> actualHashMap = new HashMap<>();
45+
for (String pair : pairs) {
46+
String[] keyValue = pair.split("=");
47+
if (keyValue.length == 2) {
48+
String key = keyValue[0];
49+
ConvertHashMapStringToHashMapObjectUsingtoString value = deserializeCustomObject(keyValue[1]);
50+
actualHashMap.put(key, value);
51+
}
52+
}
53+
System.out.println(actualHashMap);
54+
}
55+
56+
@Override
57+
public String toString() {
58+
return "{name=" + name + ", age=" + age + "}";
59+
}
60+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.baeldung.map;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import static org.junit.jupiter.api.Assertions.assertEquals;
6+
7+
class ConvertHashMapStringToHashMapObjectUsingtoStringUnitTest {
8+
9+
@Test
10+
void givenValidCustomObject_whenSerializing_thenSerializedStringIsCorrect() {
11+
ConvertHashMapStringToHashMapObjectUsingtoString customObject = new ConvertHashMapStringToHashMapObjectUsingtoString("John", 30);
12+
String expectedSerializedString = "{name=John, age=30}";
13+
assertEquals(expectedSerializedString, customObject.toString());
14+
}
15+
16+
@Test
17+
void givenValidSerializedString_whenDeserializing_thenCustomObjectIsCorrect() {
18+
String serializedString = "{name=Alice, age=25}";
19+
ConvertHashMapStringToHashMapObjectUsingtoString customObject = ConvertHashMapStringToHashMapObjectUsingtoString.deserializeCustomObject(serializedString);
20+
assertEquals("Alice", customObject.name);
21+
assertEquals(25, customObject.age);
22+
}
23+
24+
@Test
25+
void givenInvalidSerializedString_whenDeserializing_thenDefaultCustomObjectIsCreated() {
26+
String invalidSerializedString = "{invalidString}";
27+
ConvertHashMapStringToHashMapObjectUsingtoString customObject = ConvertHashMapStringToHashMapObjectUsingtoString.deserializeCustomObject(invalidSerializedString);
28+
assertEquals("", customObject.name);
29+
assertEquals(-1, customObject.age);
30+
}
31+
}

0 commit comments

Comments
 (0)