如何将对象的两个字段收集到同一个列表中?

时间:2015-11-09 06:22:02

标签: java lambda java-8

我有一个商品对象,它有两个属性:firstCategoryIdsecondCategoryId。我有一个商品清单,我想获得所有类别ID(包括firstCategoryId和secondCategoryId)。

我目前的解决方案是:

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

是否有一种更方便的方式可以在一个语句中获得所有categoryIds?

1 个答案:

答案 0 :(得分:19)

您可以使用Stream

在单个flatMap管道中执行此操作
List<Integer> cats = goodsList.stream()
                              .flatMap(c->Stream.of(c.getFirstCategoryID(),c.getSecondCategoryID()))
                              .collect(Collectors.toList());