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