Java条件按顺序执行

问题描述 投票:0回答:1

是否有更好的方法来编写此逻辑。要求是按特定顺序应用条件序列。这是条件逻辑的失败,假设它像一个漏斗。如果前一个规则或条件没有产生任何结果,它必须执行下一个规则或条件。我尝试过切换,但这似乎也不是一个合适的解决方案。

private List<String> filteredData(){

List<String> filteredList = new ArrayList();

filteredList.addAll(method1())
if(CollectionUtils.isNotEmpty(filteredList){
filteredList.addAll(method2())
}
if(CollectionUtils.isNotEmpty(filteredList){
filteredList.addAll(method3())
}
if(CollectionUtils.isNotEmpty(filteredList){
filteredList.addAll(method4())
}
if(CollectionUtils.isNotEmpty(filteredList){
filteredList.addAll(method5())
}
if(CollectionUtils.isNotEmpty(filteredList){
filteredList.addAll(method6())
}
if(CollectionUtils.isNotEmpty(filteredList){
filteredList.addAll(method7())
}
return filteredList;
}
java conditional-statements multiple-conditions
1个回答
1
投票

只有

method1()
很重要,一旦
List
not 为空,您就不需要再次检查它 - 如果
method1()
没有向
List
添加任何内容,则其他方法似乎都不会运行。所以,

List<String> filteredList = new ArrayList<>(method1());
if (!filteredList.isEmpty()) {
    filteredList.addAll(method2());
    filteredList.addAll(method3());
    filteredList.addAll(method4());
    filteredList.addAll(method5());
    filteredList.addAll(method6());
    filteredList.addAll(method7());
}
return filteredList;

但是,根据你的散文,你实际上想要类似的东西

List<String> filteredList = new ArrayList<>();
if (!filteredList.addAll(method1())) {
    if (!filteredList.addAll(method2())) {
        if (!filteredList.addAll(method3())) {
            if (!filteredList.addAll(method4())) {
                if (!filteredList.addAll(method5())) {
                    if (!filteredList.addAll(method6())) {
                        filteredList.addAll(method7());
                    }
                }
            }
        }
    }
}
return filteredList;
© www.soinside.com 2019 - 2024. All rights reserved.