英文:
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)));
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论