我有一个商品对象,它有两个属性:
firstCategoryId
和secondCategoryId
。我有一个商品列表,我想获取所有类别 Id(包括 firstCategoryId 和 secondaryCategoryId)。
我目前的解决方案是:
List<Integer> categoryIdList = goodsList.stream().map(g->g.getFirstCategoryId()).collect(toList());
categoryIdList.addAll(goodsList.stream().map(g->g.getSecondCategoryId()).collect(toList()));
是否有更方便的方式可以在一条语句中获取所有类别ID?
您可以使用
Stream
:通过单个
flatMap
管道来完成此操作
List<Integer> cats = goodsList.stream()
.flatMap(c->Stream.of(c.getFirstCategoryID(),c.getSecondCategoryID()))
.collect(Collectors.toList());
列出猫 = GoodsList.stream() .flatMap(c->Stream.of(Collections.singleList(c.getFirstCategoryID()),c.getSecondCategoryIDList())).flatMap(stream -> stream.flatMap(Collection::stream)) .collect(Collectors.toList ());