list 获取元素 java_Java 8获取列表中的所有元素

您应该使用.flatMap()从sharedFriendsIds列表创建一个列表,该列表包含在主列表contactsList中的每个Contact对象中.请检查;

List sharedContacts = contactsList.stream()

.map(Contact::getSharedFriendsIds)

.filter(Objects::nonNull)

.flatMap(Collection::stream)

.sorted().collect(Collectors.toList());

.filter()调用适用于列表中与sharedFriendsIds == null有任何联系的情况,因为这会导致下一行中的NPE,我们应该将其过滤掉.还有其他方法可以达到这个目的;

?– 可选的

List sharedContacts = contactsList.stream()

.flatMap(contacts -> Optional.ofNullable(contacts.getSharedFriendsIds())

.map(Collection::stream).orElseGet(Stream::empty))

.sorted().collect(Collectors.toList());

Where the filtering of null `sharedFriendsIds` are done in such a way that

they are absorbed into the `flatMap` logic as empty streams.

? – emptyIfNull()

您可以从apache.commons中包含集合依赖项,并使用CollectionUtils.emptyIfNull方法,如下所示;

public static Stream collectionAsStream(Collection collection) {

return emptyIfNull(collection).stream();

}

然后从原始流中调用它;

List sharedContacts = contactsList.stream()

.map(Contact::getSharedFriendsIds)

.flatMap(Foo::collectionAsStream)

.sorted().collect(Collectors.toList());

你也使用.sequential进行排序逻辑,我想你应该使用.sorted方法,因为顺序用于触发非并行使用,这已经是Stream的默认配置.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值