Como fazer uma nova lista com uma propriedade de um mapa que está em outra lista

Rishikesh Chaudhari:

Imagine que eu tenho um List<Map<String,Object>>:

[{'id':1,'name':'xyz'},{'id':2,'name':'abc'},{'id':3,'name':'pqr'}]

E eu preciso gerar uma outra lista incluindo o nome na lista acima:

List<String>

Evitando usando um loop, é possível conseguir isso usando java api stream?

Andrew Tobilko:
List<String> names = list.stream()
                         .map(i -> i.get("name").toString())
                         .collect(Collectors.toList());

Desde i.get("name").toString()pode produzir um NPE, é inteligente para filtrar os mapas que não contêm a chave "name":

List<String> names = list.stream()
                         .filter(i -> i.containsKey("name"))
                         .map(i -> i.get("name").toString())
                         .collect(Collectors.toList());

ou

List<String> names = list.stream()
                         .map(i -> i.get("name"))
                         .filter(Objects::nonNull)
                         .map(Object::toString)
                         .collect(Collectors.toList());

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=225420&siteId=1
Recomendado
Clasificación