JAVA8 获取叶节点_Java 8获取列表中的所有元素

本文探讨了如何使用Java Stream API处理可能为null的列表,并进行flatMap操作和排序。通过示例展示了避免NullPointerException的方法,包括使用Optional和自定义的collectionAsStream方法。同时,强调了在排序时正确使用sorted方法的重要性。
摘要由CSDN通过智能技术生成

小编典典

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

List sharedContacts = contactsList.stream()

.map(Contact::getSharedFriendsIds)

.filter(Objects::nonNull)

.flatMap(Collection::stream)

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

该.filter()调用适用于列表中Contact包含with 的情况sharedFriendsIds ==

null,因为这将导致NPE下一行,因此我们应该将其过滤掉。还有其他方法可以实现这一点;

-- Optional

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。

2020-11-16

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值