如何使用java流过滤器和谓词美化下面的java查询?
如何使用java流过滤器和谓词美化下面的java查询 我有一段代码,它试图根据一些需要在UI级别处理的条件抛出一些异常。如何使用java流过滤器和谓词将下面的代码缩短为更精确的代码如何使用java流过滤器和谓词美化下面的java查询?,java,java-stream,predicate,Java,Java Stream,Predicate,如何使用java流过滤器和谓词美化下面的java查询 我有一段代码,它试图根据一些需要在UI级别处理的条件抛出一些异常。如何使用java流过滤器和谓词将下面的代码缩短为更精确的代码 public Sort resolveArgument() { Sort sort = sortHandlerMethodArgumentResolver.resolveArgument(); List<Sort.Order> orders = sort.stream().collec
public Sort resolveArgument() {
Sort sort = sortHandlerMethodArgumentResolver.resolveArgument();
List<Sort.Order> orders = sort.stream().collect(Collectors.toList());
if (orders.isEmpty()) {
sort = Sort.by(Sort.Direction.DESC, default_sort_param);
} else {
if (orders.size() > sort_max_count) {
throw new InvalidSortException("Please provide only 3 valid sort parameters.");
}
}
orders.forEach(order -> {
if (!allowed_sort_params.contains(order.getProperty())) {
throw new InvalidSortException(order.getProperty() + " is not a valid sort parameter");
}
});
return sort;
}
forEach调用可以替换为:
orders.stream().map(Sort.Order::getProperty).filter(x -> !allowed_sort_params.contains(x))
.findFirst().ifPresent(x -> {
throw new InvalidSortException(x + " is not a valid sort parameter");
});
但是,在我看来,这并不是一个很大的改进。order.getProperty正在引发编译时异常。@SharmisthaChakraborty,所以您在throw语句中使用了order。请参阅编辑。Hello@Sweeper:我们是否可以用收集所有无效排序参数、准备消息并列出所有参数并最终引发InvalidSortParam异常等功能方式来处理它,而不是查找无效排序参数的第一个实例并引发异常?@SharmisthaCraborty是的,但您在问题中没有提到这一点。您的问题只是说使用java流过滤器和谓词进行美化,这意味着保持相同的行为,但使用不同的API重写代码。请再问一个问题。谢谢。我刚刚做了…请检查此链接: