如何使用 java 流过滤器和谓词美化以下 java 查询?
How can I beautify the below java query using java stream filter and predicate?
如何使用 java 流过滤器和谓词美化以下 java 查询?
我有这段代码,它试图根据需要在 UI 级别处理的某些条件抛出一些异常。如何使用 java 流过滤器和谓词将以下代码缩短为更精确。
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");
});
然而,IMO 这并没有太大的改进。
如何使用 java 流过滤器和谓词美化以下 java 查询?
我有这段代码,它试图根据需要在 UI 级别处理的某些条件抛出一些异常。如何使用 java 流过滤器和谓词将以下代码缩短为更精确。
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");
});
然而,IMO 这并没有太大的改进。