Kapil Kumar Shishodia
Kapil Kumar Shishodia

Reputation: 58

How to convert a string (representing key-value pairs) to Map

How can I convert a String into a Map:

Map m = convert("A=4 H=X PO=87"); // What's convert? System.err.println(m.getClass().getSimpleName()+m);

Expected output

HashMap{A=4, H=X, PO=87}

Upvotes: 0

Views: 112

Answers (2)

Shivani Pundir
Shivani Pundir

Reputation: 56

package com.sandbox;

import com.google.common.base.Splitter;
import org.junit.Test;

import java.util.Map;

import static org.junit.Assert.assertEquals;

public class SandboxTest {

    @Test
    public void testQuestionInput() {
        Map<String, String> map = splitToMap("A=4 H=X PO=87");
        assertEquals("4", map.get("A"));
        assertEquals("X", map.get("H"));
        assertEquals("87", map.get("PO"));
    }

    private Map<String, String> splitToMap(String in) {
        return Splitter.on(" ").withKeyValueSeparator("=").split(in);
    }

}

Upvotes: 1

Shivani Pundir
Shivani Pundir

Reputation: 56

There is no need to reinvent the wheel. The Google Guava library provides the Splitter class.

Here's how you can use it along with some test code:

package com.sandbox;

import com.google.common.base.Splitter; import org.junit.Test;

import java.util.Map;

import static org.junit.Assert.assertEquals;

public class SandboxTest {

@Test
public void testQuestionInput() {
    Map<String, String> map = splitToMap("A=4 H=X PO=87");
    assertEquals("4", map.get("A"));
    assertEquals("X", map.get("H"));
    assertEquals("87", map.get("PO"));
}

private Map<String, String> splitToMap(String in) {
    return Splitter.on(" ").withKeyValueSeparator("=").split(in);
}

}

Upvotes: 1

Related Questions