Reputation: 59
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?
Upvotes: 0
Views: 70
Reputation: 159086
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)));
Upvotes: 5