KbantikiMixaniki
KbantikiMixaniki

Reputation: 59

Remove element from list (Shorter version)

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

Answers (1)

Andreas
Andreas

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

Related Questions