了解Java8流

了解Java8流,java,java-stream,Java,Java Stream,我正在努力理解这段代码。我知道它返回了类a对象的集,但是映射(…)和收集(…)和过滤器(…)是什么 Set lists=event.getLists().stream() .map(列表->{ 试一试{ 返回ClassA.valueOf(列表); }捕获(IllegalArgumentException e){ 日志错误(“未知类别A列表”+列表,e); 返回null; } }) .filter(对象::非空) .collect(收集器.toSet()); map用于将一个流转换为另一个流,该

我正在努力理解这段代码。我知道它返回了
类a
对象的
集,但是
映射(…)
收集(…)
过滤器(…)
是什么

Set lists=event.getLists().stream()
.map(列表->{
试一试{
返回ClassA.valueOf(列表);
}捕获(IllegalArgumentException e){
日志错误(“未知类别A列表”+列表,e);
返回null;
}
})
.filter(对象::非空)
.collect(收集器.toSet());
  • map
    用于将一个
    转换为另一个
    ,该流包含相同数量的元素,但对其应用转换函数
  • filter
    用于从
    中删除这些与传递给filter方法的
    谓词
    匹配的对象
  • collect
    通常用于将
    转换回Java集合

您可能应该看看Java文档中的方法。

它们是方法。你可以在中阅读所有关于它们的内容。你能把你的问题缩小到Javadocs中没有回答的地方吗?它们是一种对过程编程非常陌生的方法,因为我们大多数人都已经学会了,所以这里有一些新的(和有趣的)东西需要学习。通过询问有关堆栈溢出的问题,您无法了解它的基本知识。你需要学习介绍和教程。有些存在于网络中,请使用您的搜索引擎。@Ole或我试图阅读这些文档。。但是我真的无法理解这个特殊的代码。。我意识到它在过滤空对象,但在列表中做一些流和映射。。他把我弄糊涂了。。我正在看文件。。。我还在看文件。
Set<ClassA> lists = event.getLists().stream()
            .map(list -> {
                try {
                    return ClassA.valueOf(list);
                } catch (IllegalArgumentException e) {
                    LOG.error("unknown classA list " + list, e);
                    return null;
                }
            })
            .filter(Objects::nonNull)
            .collect(Collectors.toSet());