gpt4 book ai didi

java - 流内部不同数值类型的转换/比较

转载 作者:搜寻专家 更新时间:2023-11-01 01:15:31 24 4
gpt4 key购买 nike

我在使用 Stream API 时遇到了问题……又一次。我尝试实现的功能并不是最难的事情,但我在过滤时遇到了困难,因为存在不兼容的类型,而且我不知道如何进行正确的比较。这个想法是获取有关给定部分链接到的部门的信息。

department.getSectionId() 返回 LongSection::getId 是一个 Integer(我可以'改变)

private List<DepartmentInfo> retrieveLinkedDepartments(final Collection<Section> sections) {
return this.departmentDao
.findAll()
.stream()
.filter(department -> department.getSectionId() != null)
.filter(department -> department.getSectionId().equals(sections.stream().map(Section::getId)))
.map(this.departmentInfoMapper::map)
.collect(Collectors.toList());
}

当然主谓词的结果总是假的。我知道代码很糟糕而且我没有正确定义条件,但我希望你能理解。也许有可能以某种方式合并这些集合或以一种聪明的方式进行比较。

提前致谢!

最佳答案

截至目前,您正在比较 Long和一个 Steam<Integer>这将始终返回 false。

您可以稍微翻转一下您的逻辑并使用 mapToLong将整数转换为 Long的:

private List<DepartmentInfo> retrieveLinkedDepartments(final Collection<Section> sections) {
return this.departmentDao
.findAll()
.stream()
.filter(department -> department.getSectionId() != null)
.filter(department -> sections.stream()
.mapToLong(Section::getId)
.anyMatch(department.getSectionId()::equals))
.map(this.departmentInfoMapper::map)
.collect(Collectors.toList());
}

这将转换 Section::getIdStream<Long> , 然后过滤 Stream查看是否有 department.getSectionId等于ID。

关于java - 流内部不同数值类型的转换/比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54112247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com