Java - obter uma lista de novos objetos a partir de um fluxo com base na lista dos existentes

DrAhzek:

Eu preciso usar lambdas para gerar algumas listas de novos objetos. Estes novos objetos herdam alguns dos traços dos existentes. Uma vez que é difícil descrevê-lo sem entrar em muitos detalhes delicados, vou usar um exemplo de um pai e seus filhos.

Eu quero gerar uma lista de crianças com base em uma lista de pessoas (uma pessoa = um kid). As crianças devem herdar apenas alguns traços de seus pais (neste caso, vamos dizer que é uma cor de pele).

Desde que eu estou um pouco forçado a lambdas de uso (mas também quiser aprender como ele funciona), eu tentei o seguinte solução, mas eu não consigo superar o problema com o mapeamento correto (não vi nada como isso ainda e eu 'estou fazendo um método de tentativa e erro). Provavelmente eu tenho um construtor mal feito também.

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 .:

Depois mapvocê tem um Stream<Kid>sim o que você precisa é de um List<Kid>, assim, você vai precisar para recolher a uma lista via toList().

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

ou se você precisa de uma lista mutável, em seguida, usar toCollection:

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

Em outra nota, você precisa repensar o seu design.

  1. em vez de passar um todo Personpara o Kidconstrutor apenas passar um Colour( assumindo que é um enum ) caso contrário, passar Stringpara representar a cor.
  2. ter um Personatributo dentro de um Kidmodelo não faz muito sentido para ser honesto, é como dizer "uma criança tem uma pessoa" ... talvez o que você está procurando um Kidpara herdar de Personindicar que "uma criança é uma pessoa "

etc ...

Acho que você gosta

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