从列表中移除元素(缩写版)

huangapple go评论66阅读模式
英文:

Remove element from list (Shorter version)

问题

_scheduledTasks.remove(clazz)
    .stream()
    .filter(Objects::nonNull)
    .forEach(s -> s.cancel(true));
英文:

I made this code

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

How can i make this into 1 line using java 8 style?

答案1

得分: 5

在Java 9及以上版本中,可以像这样使用Optional

Optional.ofNullable(_scheduledTasks.remove(clazz))
        .stream() // Java 9中引入
        .flatMap(List::stream)
        .filter(Objects::nonNull)
        .forEach(s -> s.cancel(true));

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

在Java 8中,可以使用ifPresent()。略显不太优雅。

Optional.ofNullable(_scheduledTasks.remove(clazz))
        .ifPresent(x -> x.stream()
                         .filter(Objects::nonNull)
                         .forEach(s -> s.cancel(true)));

// 合并成"1行"
Optional.ofNullable(_scheduledTasks.remove(clazz)).ifPresent(x -> x.stream().filter(Objects::nonNull).forEach(s -> s.cancel(true)));
英文:

In Java 9+, use Optional like this:

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));

In Java 8, use ifPresent(). A bit less elegant.

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)));

huangapple
  • 本文由 发表于 2020年8月28日 20:26:38
  • 转载请务必保留本文链接:https://go.coder-hub.com/63633777.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定