从Java Stream移除声纳皮棉问题

Shiladittya Chakraborty:

我有下面的代码是基于数据排序

creditDetailsDTO.getSectionDetails().stream()
                .sorted(Comparator.comparing(dto -> DateUtil.convertToTxnDate(dto.getStartDate())));

上面的代码creditDetailsDTO.getSectionDetails()基于此列表对数据进行排序dto.getStartDate()

代码工作正常,只有声纳问题在说

重构代码,以便使用此流管道。

如何解决?

埃里克森:

这实际上是“死代码”。

它配置了一个管道,但是从不调用它,也没有尝试将结果(是Stream分配到任何地方,以便以后可以调用它。

如果确实您的“代码可以正常工作”,则可以删除此语句,并且您的代码仍然可以正常工作,因为它什么也不做。

但是,如果您试图按顺序获取“部分详细信息”,则需要将它们收集到一个列表中,如下所示:

List<SectionDetail> details = creditDetailsDTO.getSectionDetails().stream()
    .sorted(Comparator.comparing(dto -> DateUtil.convertToTxnDate(dto.getStartDate())))
    .collect(Collectors.toList());

最后的collect()调用是一个“终端操作”,实际上使管道被调用。如果您阅读有关的文档Stream将会看到某些方法是“中间操作”。这些(也只有这些)方法返回某种类型的流,但其配置已更改,但实际上并未调用管道。其他方法是终端操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章