2015-11-09 9 views
12

Ich habe ein Objekt von Waren, die zwei Eigenschaften hat: firstCategoryId und secondCategoryId. Ich habe eine Warenliste und möchte alle Kategorie-IDs (einschließlich firstCategoryId und secondCategoryId) abrufen.Wie werden zwei Felder eines Objekts in derselben Liste gesammelt?

Meine aktuelle Lösung ist:

List<Integer> categoryIdList = goodsList.stream().map(g->g.getFirstCategoryId()).collect(toList()); 
categoryIdList.addAll(goodsList.stream().map(g->g.getSecondCategoryId()).collect(toList())); 

Gibt es eine bequemere Art und Weise habe ich alle CategoryIDs in einer einzigen Anweisung zu bekommen?

+0

Dank für verschönernde – zhuguowei

Antwort

15

Sie können es mit einer einzigen Stream Pipeline flatMap mit:

List<Integer> cats = goodsList.stream() 
           .flatMap(c->Stream.of(c.getFirstCategoryID(),c.getSecondCategoryID())) 
           .collect(Collectors.toList()); 
Verwandte Themen