2015-11-09 20 views
12

商品のオブジェクトは、firstCategoryIdsecondCategoryIdという2つのプロパティを持っています。私は商品のリストを持っており、すべてのカテゴリID(firstCategoryIdとsecondCategoryIdの両方を含む)を取得したい。オブジェクトの2つのフィールドを同じリストに集めるにはどうすればいいですか?

私の現在のソリューションは、次のとおりです。

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

は、私は1つのステートメントですべてのcategoryIdsを得ることができ、より便利な方法はありますか?

+0

美化のためのおかげで – zhuguowei

答えて

15

あなたはflatMapを使用して単一Streamパイプラインでそれを行うことができます。

List<Integer> cats = goodsList.stream() 
           .flatMap(c->Stream.of(c.getFirstCategoryID(),c.getSecondCategoryID())) 
           .collect(Collectors.toList()); 
関連する問題