Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java流过滤器和谓词美化下面的java查询?_Java_Java Stream_Predicate - Fatal编程技术网

如何使用java流过滤器和谓词美化下面的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

如何使用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");
    });

但是,在我看来,这并不是一个很大的改进。

order.getProperty正在引发编译时异常。@SharmisthaChakraborty,所以您在throw语句中使用了order。请参阅编辑。Hello@Sweeper:我们是否可以用收集所有无效排序参数、准备消息并列出所有参数并最终引发InvalidSortParam异常等功能方式来处理它,而不是查找无效排序参数的第一个实例并引发异常?@SharmisthaCraborty是的,但您在问题中没有提到这一点。您的问题只是说使用java流过滤器和谓词进行美化,这意味着保持相同的行为,但使用不同的API重写代码。请再问一个问题。谢谢。我刚刚做了…请检查此链接: