繁体   English   中英

Java stream,从object获取多个属性

[英]Java stream, get multiple properties from object

我有一个像这样的 object:

public class Transaction {
    private long buyerId;
    private long sellerId;
... }

给定一个List<Transaction> ,我想要参与这些交易的所有买家/卖家的 ID,例如Collection<Long> 这是我的工作解决方案:

List<Transaction> transactions = getTransactions();
Stream<Long> buyerIds = transactions.stream().map( Transaction::getBuyerId );
Stream<Long> sellerIds = transactions.stream().map( Transaction::getSellerId );
Collection<Long> allBuyerSellerIds = Stream.concat( buyerIds, sellerIds )
                .collect( Collectors.toList() );

但是,如果我可以在不重复transactions两次的情况下做到这一点,那就太好了。 我怎样才能做到这一点? 即我想用 stream 遍历transactions ,并且每次都获得多个属性。

谢谢。

您可以使用flatMap ,因为您最终还是希望它们在一个集合中。

getTransactions().stream()
 .flatMap(t -> Stream.of(t.getBuyerId(), t.getSellerId()))
 .collect(toList());

如果您不希望它们在单个集合中,则最好使用传统的循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM