Wie verwenden von Streams in Java 8 zu sammeln, ein paar Felder in einer Liste?

So habe ich zum Beispiel Klasse Person mit Namen und Familienname Felder.

Will ich sammeln List von String (die Namen und die Familiennamen alle zusammen) aus List von Person, aber es scheint, dass ich kann nicht mit ansehen zweimal pro Liste oder nicht verwenden können, Strom zweimal pro Liste.

Mein code ist:

persons.stream()
   .map(Person::getName)
   .collect(Collectors.toSet())
   .stream().map(Person::getSurname) 
   .collect(Collectors.toList())

aber es sagt mir, dass Person::getSurname non-statische Methode kann nicht verwiesen werden, aus statischen Kontext.

Was mache ich falsch?

  • Vermutlich Person::getName gibt eine String? Dann sammeln Sie, dass die Erträge einer Set<String>. So können Sie nicht rufen Person::getSurname auf die Elemente.
  • Was wird das Ergebnis sein soll? Nur ein List<String> mit Ihnen allen zusammen gemischt?
  • Wenn du sagst "die Namen und die Familiennamen alle zusammen", meinst du verkettet? Abwechselnd?
  • Jorn Vernee, das ist richtig!
  • khelwood, ja, mischen Sie einfach den Namen und Familiennamen in einer Liste.
  • Sie sind wahrscheinlich auf der Suche nach persons.stream().flatMap(p -> Stream.of(p.getName(), p.getSurname()).collect(Collectors.toSet())
  • Alexis C, vielen Dank!!! ganz das, was ich suchte!
  • werfen Sie einen Blick stackoverflow.com/questions/26684562/...

InformationsquelleAutor user2620644 | 2017-02-03
Schreibe einen Kommentar