Java-8流、过滤器和映射执行



我是java新手。刚刚发现了一些包含流、过滤器和映射的代码。你能解释一下它是怎么工作的吗。

List<String> refs = dataDao.retrieveData(startDate, endDate);
List<String[]> csvRecords = dataDao.retrieveAllData()
.stream()
.filter(promo -> promoFilter(promo, startDate, endDate, refs))
.map(this::promoSummary)
.map(builder::toCsvRecord)
.collect(Collectors.toList());

你最好参考完整的课程/教程,但由于我自己刚刚学习了这些概念,我需要复习一下。不要把我在这里写的东西当真:只是用它来帮助你更好地理解。

流是一个集合,它只允许一次特定的流操作。把它想象成一条毯子,用完后就会展开。流是模板,这意味着您定义和使用某个东西的流。例如:Stream<String>。所以,想想这条小溪是一条卷起的毯子。。。玩具(我不知道,你用毯子卷什么?(。

当您滥用方法链接对流进行编码时,这意味着您不将结果存储到变量中,而是动态调用其中一个方法。在您的代码中,链接发生了六次!

所以,让我们来剖析一下这个链条:

  • dataDao.retrieveAllData()是一种专有方法,与流无关。我想它会返回一个特殊的对象
  • .stream()是链的第一个环节。它返回一个Stream<XXX>
  • .filter( )返回通过谓词promo -> promoFilter(promo, startDate, endDate, refs)的流的元素。谓词由lambda函数表示。但这完全是另一个教训
  • .map(F)返回一个流,该流是由函数F修改的输入流
  • .collect是另一个编辑流的函数

一些帮助你学习的教程,没有特别的顺序:

  • Lambda表达式
  • 功能接口

希望我能帮上忙!

最新更新