Java - obtenir une liste de nouveaux objets à partir d'un flux en fonction de la liste de ceux existants

DrAhzek:

Je dois utiliser lambdas pour générer des listes de nouveaux objets. Ces nouveaux objets héritent quelques-uns des traits de ceux qui existent déjà. Comme il est difficile de le décrire sans entrer dans les détails trop délicats, je vais utiliser un exemple d'un parent et leurs enfants.

Je veux générer une liste des enfants sur la base d'une liste de personnes (une personne = un enfant). Les enfants devraient hériter seulement quelques traits de leurs parents (dans ce cas, disons que c'est une couleur de la peau).

Depuis que je suis un peu obligé de lambdas d'utilisation (mais veulent aussi savoir comment cela fonctionne), je l'ai essayé la solution suivante mais je ne peux pas obtenir sur le problème avec la cartographie correcte (n'ont pas vu quelque chose comme ça encore et je 'M faire une méthode d'essai et d'erreur). Probablement que j'ai un constructeur mal fait aussi bien.

public class Kid {
    private Colour colour;
    private Person person;

    public Kid(Person person) {
        this.colour = person.getColour();
    }

    public List<Kid> listOfKids() {
        return people.stream()
                     .map(e -> new Kid(e));
    }
}
Ousmane D. :

Après que mapvous avez un Stream<Kid>peu ce que vous avez besoin est un List<Kid>vous aurez donc besoin de recueillir une liste via toList().

return people.stream()
             .map(e -> new Kid(e))
             .collect(Collectors.toList());

ou si vous avez besoin d' une liste mutable utilisez toCollection:

return people.stream()
             .map(e -> new Kid(e))
             .collect(Collectors.toCollection(ArrayList::new));

Sur une autre note, vous devez repenser votre conception.

  1. au lieu de passer son ensemble Personau Kidconstructeur passer juste un Colour( en supposant qu'il est un ENUM ) passent autrement Stringpour représenter la couleur.
  2. ayant un Personattribut dans un Kidmodèle ne fait pas beaucoup de sens pour être honnête, il est comme dire « un enfant a une personne » ... peut - être ce que vous cherchez est Kidd'hériter de Personpour indiquer que « un enfant est une personne "

etc...

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=178470&siteId=1
conseillé
Classement