I have a Java Property file and there is a KEY
as ORDER
. So I retrieve the VALUE
of that KEY
using the getProperty(
In one line :
HashMap map = (HashMap) Arrays.asList(str.split(",")).stream().map(s -> s.split(":")).collect(Collectors.toMap(e -> e[0], e -> Integer.parseInt(e[1])));
Details:
1) Split entry pairs and convert string array to List
in order to use java.lang.Collection.Stream
API from Java 1.8
Arrays.asList(str.split(","))
2) Map the resulting string list "key:value"
to a string array with [0] as key and [1] as value
map(s -> s.split(":"))
3) Use collect
terminal method from stream API to mutate
collect(Collector super String, Object, Map
4) Use the Collectors.toMap()
static method which take two Function to perform mutation from input type to key and value type.
toMap(Function super T,? extends K> keyMapper, Function super T,? extends U> valueMapper)
where T is the input type, K the key type and U the value type.
5) Following lambda mutate String
to String
key and String
to Integer
value
toMap(e -> e[0], e -> Integer.parseInt(e[1]))
Enjoy the stream and lambda style with Java 8
. No more loops !