I am trying to adapt Lambda features, however few struggles here and there.
List<Map<String, String>> list = new LinkedList<>();
Map<String, String> map = new HashMap<>();
map.put("data1", "12345");
map.put("data2", "45678");
list.add(map);
I just want to print the values in comma separated format like 12345,45678
So here goes my trial
list.stream().map(Map::values).collect(Collectors.toList()) //Collectors.joining(",")
and the output is [[12345,45678]]
. It means, there's a list and inside list it's creating the comma separated value at 0
index. I do understand why it's doing though.
But I didn't get through how to extract my desired result unless I call .get(0)
in the end of that expression.
Any help/some more insights on how to use lambdas better will be helpful
Try this :
The
flatMap
method flattens out aCollection<Stream<String>>
into a singleStream<String>
.Alternately, you can try what @Holger suggested in the comments.
Note that since you are using a
Map
, there is no guarantee that the order will be preserved. You might see the output as45678,12345
at your end. If you wish to preserve the order, you can use aLinkedHashMap
instead of aHashMap
.