This is my List:
[
{name: 'moe', age: 40},
{name: 'larry', age: 50},
{name: 'curly', age: 60}
];
I want to pluck name
values and create another List
like this:
["moe", "larry", "curly"]
I've written this code and it works:
List<String> newList = new ArrayList<>();
for(Map<String, Object> entry : list) {
newList.add((String) entry.get("name"));
}
But how to do it in using stream
. I've tried this code which doesn't work.
List<String> newList = list.stream().map(x -> x.get("name")).collect(Collectors.toList());
Since your List
appears to be a List<Map<String,Object>
, your stream pipeline would produce a List<Object>
:
List<Object> newList = list.stream().map(x -> x.get("name")).collect(Collectors.toList());
Or you could cast the value to String
if you are sure you are going to get only String
s:
List<String> newList = list.stream().map(x -> (String)x.get("name")).collect(Collectors.toList());
x.get("name") should be cast to String.
for example:
List<String> newList = list.stream().map(x -> (String) x.get("name")).collect(Collectors.toList());
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With