我想使用类似Optional
的代码构建一个Sort
对象:
private Sort buildSort(Collection<String> fields) {
fields.stream()
.map(this::buildOrder)
.collect(Sort.unsorted(), ????, ????);
}
buildOrder
是:
private Order buildOrder(String field) {
if (field.startsWith("-")) {
return Order.desc(field.substring(1));
}
else {
return Order.asc(field);
}
}
如果流为空,我需要返回一个 Sort.unsorted()
,或者组合每个 Sort
对象。
Sort 对象有一个 and
方法,代表构建和连接顺序。
Sort.by(sort1)
.and(sort2)...
所以我需要:
if (stream is empty) then
return Sort.unsorted
else
return foreach item in stream:
Sort.by(item).and(item2).and(item3)...
类(class):
org.springframework.data.domain.Sort
org.springframework.data.domain.Sort.Order
注意
我需要使用stream-api!
最佳答案
我相信这应该有效。第二个 map
将每个 Order
转换为其自己的 Sort
。然后累加器和组合器只需将 Sorts
添加在一起即可。
return fields.stream()
.map(this::buildOrder)
.map(Sort::by)
.collect(Sort::unsorted, Sort::and, Sort::and);
关于java 流 : collect taking in mind stream is empty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54744078/