【发布时间】:2023-03-08 13:37:01
【问题描述】:
我有以下方法和数据:-
public Page<MydataDTO> getData(){
// here var data is Page<MydataDTO>
var data = this.dataRepository.findAll(specification, pageable)
.map(MydataDTO::from);
if(startOfDay != null && atEndOfDay != null){
Instant finalStartOfDay = startOfDay;
Instant finalAtEndOfDay = atEndOfDay;
// here var filteredData is Lit<MydataDTO>
var filteredData = vv.stream().filter(e -> e.getCreated().isAfter(finalStartOfDay) && e.getCreated().isBefore(finalAtEndOfDay))
.collect(Collectors.toList());
}
}
因为我必须从此函数返回 Page。如何拟合数据并从此函数返回页面?我可以将列表转换为页面吗?也许是的,但出于性能原因,我不应该这样做。因为将 Page 转换为 List 并再次转换回 Page 听起来很疯狂。对于大型收藏品,这是非常糟糕的。我怎样才能有效地做到这一点?
【问题讨论】:
-
Page是什么类?你能把Javadoc链接到它吗?添加适当的标签可能会有所帮助。 -
您的评论说,“这里的 var 数据是 Page
”是很好的提示,您应该明确声明变量类型而不使用类型推断。当人类可以很容易地从右手表达式中看到左手类型是什么时,类型推断非常有用。例如。我可以很容易地看到 filterData是List;我看不出它的泛型是什么。 -
什么是
vv? minimal reproducible example 将有助于解决您的问题并将其与不相关的细节隔离开来。
标签: java java-stream filtering