I have a map with Integer
keys and values. I need to transform it into a String
with this specific format: key1 - val1, key2 - val2, key3 - v
-
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 entries
stream()
creates a stream for that iterable
map()
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.joining is a method which returns a Collector which 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.
讨论(0)
- 热议问题