Core Java

Converting String or String Array to Map in Java

Data manipulation is a common task that Java developers often encounter when developing applications. One particularly useful operation is to convert a string or string array into a map in Java. This process allows developers to efficiently organize and manage data, making it easier to access and manipulate information within their Java applications.

In this article, we will explore converting strings or string arrays to maps in Java and delve into different approaches to perform this conversion, offering practical examples.

1. Understanding the Basics

Before we delve into the techniques for converting String or String Array into a Map in Java, let’s first get a clear understanding of some essential principles.

1.1 What is a Map

a Map in Java is an interface that represents a collection of key-value pairs with each key in a Map associated with exactly one value. Common implementations of the Map interface include HashMap, TreeMap, and LinkedHashMap.

1.2 String and String Array

  • A String is a sequence of characters in Java. It is immutable, meaning you cannot change its contents once it is created.
  • A string array, denoted as String[], is a data structure that can store multiple strings. We can perform various operations on String arrays, such as looping through them, searching for specific elements, sorting, and more, depending on our program’s requirements.

2. Convert a String to a Map

Converting a String to a Map in Java, can be a common task when working with data. This process is particularly useful when you have serialized data of key-value pairs in a string format, and you need to transform it into a more structured data structure like a Map.

2.1 Convert String to Map Using Java Streams

If we have a String containing key-value pairs separated by a delimiter such as a comma or semicolon, We can use Java Streams to convert it into a Map. Let’s consider an example where we have a String Object containing multiple students, with each student name and studentId separated by a colon.

Now, Let’s say we want to convert the String to a Map object so that each studentId becomes the key of the HashMap and their name becomes the value of the HashMap object. Here’s an example:

public class StringToMapExample {

    public static void main(String[] args) {
        String input = "001=Charles, 002=Bill, 003=Thomas, 004=Jonathan, 005=Daniel";

        Map<String, String> map = Arrays.stream(input.split(","))
                .map(entry -> entry.split("="))
                .collect(Collectors.toMap(entry -> entry[0], entry -> entry[1]));

        System.out.println(map);
    }
}

In the example above, we split the input string into key-value pairs and convert them into a Map using Java Streams using the Collectors.toMap(). The output is:

{001=Charles,  005=Daniel,  004=Jonathan,  003=Thomas,  002=Bill}

2.2 Convert String to Map Using StringTokenizer

In Java, we can convert a string into a map using the StringTokenizer class along with the HashMap class. Here’s an example code of how to do this:

public class StringToMapStringTokenizer {

    public static void main(String[] args) {
        String input = "001=Charles, 002=Bill, 003=Thomas, 004=Jonathan, 005=Daniel";
        String delimiter = ",";
        
        Map<String, String> map = new HashMap<String, String>();
        
        StringTokenizer tokenizer = new StringTokenizer(input, delimiter);
        while (tokenizer.hasMoreTokens()) {
            String token = tokenizer.nextToken();
            String[] keyValue = token.split("=");
            
            if (keyValue.length == 2) {
                String key = keyValue[0];
                String value = keyValue[1];
                map.put(key, value);
            }
        }
        
        System.out.println(map);
    }
}

In this example, We start by defining the input string containing key-value pairs and the delimiter ",". Next, we create a HashMap to store the key-value pairs. We then use StringTokenizer to split the input string into tokens based on the delimiter.

Finally, we iterate through the tokens, split each token into key-value pairs using the "=" character, and add them to the map. After running this code, we will have a Map containing the key-value pairs extracted from the input string.

2.3 Convert String to Map Using String.Split() Method

We can also use the String.split() method to convert a string to a map in Java. This involves splitting the input string into tokens based on a delimiter, and then parsing these tokens into key-value pairs. Here is an example:

public class SplitStringToMapExample {

    public static void main(String[] args) {
        String input = "001=Charles, 002=Bill, 003=Thomas, 004=Jonathan, 005=Daniel";
        String delimiter = ",";
        
        Map<String, String> map = new HashMap<String, String>();
        
        // Split the input string by the delimiter
        String[] keyValuePairs = input.split(delimiter);
        
        // Iterate through the key-value pairs and add them to the map
        for (String pair : keyValuePairs) {
            String[] keyValue = pair.split("=");
            if (keyValue.length == 2) {
                String key = keyValue[0];
                String value = keyValue[1];
                map.put(key, value);
            }
        }
        
        // Display the resulting map
        System.out.println(map);
    }
}


In this example, we start with an input string containing key-value pairs separated by a comma (,).
Next, We use String.split(delimiter) method to split the input string into an array of key-value pairs, where delimiter is the character that separates them.

We iterate through these key-value pairs and split each pair into a key and a value using split("="), and add them to a HashMap named map.

Finally, we display the resulting map, which contains the key-value pairs extracted from the input string.
When we run this code, you will get a map with the following content as shown in Fig 1:

Fig 1: Output of using the String.split method to convert a string to map
Fig 1: Output of using the String.split method to convert a string to map

2.4 Parsing JSON String to a Map

If we have a JSON string that we want to convert into a Map, we can use popular Java libraries like Gson or Jackson to parse the JSON string. Here is an example using the Gson library:

First, we need to update our maven project’s pom.xml file to include Gson as a dependency by adding the following dependency to the <dependencies> section:

        <dependency>
            <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>2.8.9</version> 
        </dependency>

Next, we update our Java class to the code shown below:

public class StringToMapGsonExample {

    public static void main(String[] args) {
        String jsonString = "{001:\"Charles\",002:\"Bill\",003:\"Thomas\",004:\"Jonathan\"}";

        // Using Gson library
        Gson gson = new Gson();
        Map<String, Object> map = gson.fromJson(jsonString, Map.class);

        System.out.println(map);
    }
}


In this example, we first define the JSON string that we want to parse. The next line creates a Gson instance named gson. Next, we use the gson.fromJson() method to parse the JSON string into a Map object.

The output from running the above code is:

{001=Charles, 002=Bill, 003=Thomas, 004=Jonathan}

3. Convert String Array to a Map

In Java, If we have an array of strings and we want to convert it into a map, we can use the following code:

public class StringArrayToMap {

    public static void main(String[] args) {
        
        String[] stringArray = {"name=Bill", "age=40", "city=Calgary", "Occupation=Software Engr"};

        // Create a map from the string array
        Map<String, String> map = new HashMap<String, String>();
        for (String entry : stringArray) {
            String[] parts = entry.split("=");
            if (parts.length == 2) {
                map.put(parts[0], parts[1]);
            }
        }

        System.out.println(map);
    }
}

In this example, we start by declaring an Array[] of String data type named stringArray that we want to convert to a map. We then iterate through the String[] array, split each element into key-value pairs, and then add them to the Map.

When we run the above sample code, we would get the following output:

{Occupation=Software Engr, city=Calgary, name=Bill, age=40}

4. Conclusion

In this article, we have explored and shown different methods and code examples of how to convert a String and String array to a Map in Java. Using these various techniques presented can help us simplify data manipulation of key-value-based tasks in our Java applications. Converting a String or a String array to a Map in Java involves understanding the structure of your input data and choosing the appropriate conversion method to successfully convert the strings to maps.

In conclusion, the ability to convert strings into maps provides us with a toolset that enables us to represent and work with structured data in a more organized and accessible manner thus enhancing the readability of our code.

5. Download the Source Code

This was an example of how to convert a String or String Array to a Map in Java.

Download
You can download the full source code of this example here: Converting String or String Array to Map in Java

Omozegie Aziegbe

Omos holds a Master degree in Information Engineering with Network Management from the Robert Gordon University, Aberdeen. Omos is currently a freelance web/application developer who is currently focused on developing Java enterprise applications with the Jakarta EE framework.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments
Back to top button