I think you’re looking for something like this:
import java.util.*;
import java.util.stream.*;
public class Test {
public static void main(String[] args) throws Exception {
Map<Integer, String> map = new HashMap<>();
map.put(1, "foo");
map.put(2, "bar");
map.put(3, "baz");
String result = map.entrySet()
.stream()
.map(entry -> entry.getKey() + " - " + entry.getValue())
.collect(Collectors.joining(", "));
System.out.println(result);
}
}
To go through the bits in turn:
entrySet()gets an iterable sequence of entriesstream()creates a stream for that iterablemap()converts that stream of entries into a stream of strings of the form “key – value”collect(Collectors.joining(", "))joins all the entries in the stream into a single string, using", "as the separator.Collectors.joiningis a method which returns aCollectorwhich can work on an input sequence of strings, giving a result of a single string.
Note that the order is not guaranteed here, because HashMap isn’t ordered. You might want to use TreeMap to get the values in key order.