Imaginez que j'ai un List<Map<String,Object>>
:
[{'id':1,'name':'xyz'},{'id':2,'name':'abc'},{'id':3,'name':'pqr'}]
Et je dois générer une autre liste comprenant le nom dans la liste ci-dessus:
List<String>
Évitant d'utiliser une boucle, est-il possible d'y parvenir en utilisant java api stream?
List<String> names = list.stream()
.map(i -> i.get("name").toString())
.collect(Collectors.toList());
Depuis i.get("name").toString()
pourrait produire un NPE, il est judicieux de filtrer les cartes qui ne contiennent pas la clé "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());
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots