使用java8流的规范组合列表
如何在此代码中使用Java8流:使用java8流的规范组合列表,java,spring-boot,java-8,spring-data-jpa,Java,Spring Boot,Java 8,Spring Data Jpa,如何在此代码中使用Java8流: Specification<T> specification = specifications.getSpec(searchCriteria.getConditions().get(0)); for(int i = 1; i < searchCriteria.getConditions().size(); i++) { specification = specification.and(getSpec(s
Specification<T> specification = specifications.getSpec(searchCriteria.getConditions().get(0));
for(int i = 1; i < searchCriteria.getConditions().size(); i++) {
specification = specification.and(getSpec(searchCriteria.getConditions().get(i)));
}
相关类和方法:
@Getter
@Setter
public class SearchCriteria implements Serializable{
private static final long serialVersionUID = 1L;
private List<Condition> conditions;
private Integer limit;
private Integer offset;
@Getter
@Setter
public class Condition{
private String key;
private EConstant.OPERATION operation;
private String value;
}
}
public Specification<T> getSpec(SearchCriteria.Condition condition){
....
}
@Getter
@塞特
公共类SearchCriteria实现可序列化{
私有静态最终长serialVersionUID=1L;
私人名单条件;
私有整数限制;
专用整数偏移量;
@吸气剂
@塞特
公共阶级状况{
私钥;
私人经济运行;
私有字符串值;
}
}
公共规范getSpec(SearchCriteria.Condition){
....
}
如果我理解正确:
IntStream.range(0, searchCriteria.getConditions().size())
.mapToObj(index-> getSpec(searchCriteria.getConditions().get(index)))
.reduce(Specification::and)
.orElseThrow(SomeException::new) // or any default from Specification...
或者更好:
searchCriteria.getConditions()
.stream()
.map(this::getSpec)
.reduce(Specification::and)
.orElseThrow(SomeException::new)
searchCriteria.getConditions()
.stream()
.map(this::getSpec)
.reduce(Specification::and)
.orElseThrow(SomeException::new)