首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从列表中删除元素(简写版本)

问从列表中删除元素(简写版本)
EN

Stack Overflow用户
提问于 2020-08-28 20:26:38
回答 1查看 52关注 0票数 0

我写了这段代码

代码语言:javascript
复制
final List<Future<?>> list = _scheduledTasks.remove(clazz);
        
if (Objects.nonNull(list))
{
    list.stream().filter(Objects::nonNull).forEach(s -> s.cancel(true));
}

我怎样用java 8风格把它写成一行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-28 20:34:40

在Java 9+中,像这样使用Optional:

代码语言:javascript
复制
Optional.ofNullable(_scheduledTasks.remove(clazz))
        .stream() // Added in java 9
        .flatMap(List::stream)
        .filter(Objects::nonNull)
        .forEach(s -> s.cancel(true));

// As "1 line"
Optional.ofNullable(_scheduledTasks.remove(clazz)).stream().flatMap(List::stream).filter(Objects::nonNull).forEach(s -> s.cancel(true));

在Java8中,使用ifPresent()。有点不那么优雅。

代码语言:javascript
复制
Optional.ofNullable(_scheduledTasks.remove(clazz))
        .ifPresent(x -> x.stream()
                         .filter(Objects::nonNull)
                         .forEach(s -> s.cancel(true)));

// As "1 line"
Optional.ofNullable(_scheduledTasks.remove(clazz)).ifPresent(x -> x.stream().filter(Objects::nonNull).forEach(s -> s.cancel(true)));
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63633777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档