用 Java8 Lambda 从列表中过滤空值

Java流的常见任务是清理输入数据,以便以后的步骤可以正常工作。 #1最常见的清除步骤可能是从集合中删除空值。

流使操作变得简单:

myCollection.stream()
  .filter(Objects::nonNull)
  .do.what.you.need
myCollection.stream() .filter(Objects::nonNull) .do.what.you.need

与经典方法比较:

while(myCollection.remove(null));
// do what you need, but you better not need that original list, because its gone...
myCollection.removeAll(Collections.singleton(null));
// do what you need, but you better not need that original list, because its gone...
while(myCollection.remove(null)); // do what you need, but you better not need that original list, because its gone... myCollection.removeAll(Collections.singleton(null)); // do what you need, but you better not need that original list, because its gone...

像流方法一样,它们简短而有趣,但是与流方法不同,它们修改了原始列表。 第一个例子也很慢。

我喜欢流方法,因为我可以在过滤器任务之后链接其他任务,包括map. sorted, reduce和更多!我发现传统的命令式迭代方法不仅更冗长,而且在概念上更难于遵循。

Java流的常见任务是清理输入数据,以便以后的步骤可以正常工作。 #1最常见的清除步骤可能是从集合中删除空值。 流使操作变得简单: myCollection.stream() .filter(Objects::nonNull) .do.what.you.need 与经典方法比较: while(myCollection.remove(null)); // do what you need, but you better not need that original list, because its gone... myCollection.removeAll(Collections.singleton(null)); // do what you need, but you better not need that original list, because its gone... 像流方法一样,它们简短而有趣,但是与流方法不同,它们修改了原始列表。 第一个例子也很慢。 我喜欢流方法,因为我可以在过滤器任务之后链接其他任务,包括map. sorted, reduce和更多!我发现传统的命令式迭代方法不仅更冗长,而且在概念上更难于遵循。
经验分享 程序员 微信小程序 职场和发展