Fernando Ruscitti
Fernando Ruscitti

Reputation: 37

Convert a Map<String, String[]> to a delimited String

What is the best way to convert a Java Map<String, String[]> to a delimited String?

Example using guava:

Map<String, String[]> items = new HashMap<>();
items.put("s1", new String[] {"abc", "def"});
items.put("s2", new String[] {"123", "456"});
System.out.println(Joiner.on(',').withKeyValueSeparator('=').join(items));

Do not flatten the String[]:

s1=**[Ljava.lang.String;@2e98be86**,s2=[Ljava.lang.String;@b676908

Thanks.

Upvotes: 0

Views: 51

Answers (2)

geanakuch
geanakuch

Reputation: 972

You could do this using streams:

items.entrySet().stream().map(e -> e.getKey() + "=" + Stream.of(e.getValue()).collect(Collectors.joining(","))).collect(Collectors.joining(","));

Upvotes: 1

pringi
pringi

Reputation: 4654

You can do something like this:

Map<String, String[]> items = new HashMap<>();
items.put("s1", new String[] {"abc", "def"});
items.put("s2", new String[] {"123", "456"});

System.out.println(items.entrySet().stream().map(es -> es.getKey() + "=" + String.join(",", es.getValue())).collect(
    Collectors.toList()));

Upvotes: 1

Related Questions