首页 > 解决方案 > 使用许多 for 和 Ifs 语句简化方法

问题描述

ExtractSourceQueryOB 是一个表示查询的对象,一个查询可以有一个主查询,在这种情况下,主查询不应从列表中删除,querySet 包含表示此操作中所需的查询的键字符串,但它不考虑该查询具有主控的可能性。因此,我尝试遍历所有查询,检查该查询是否具有主控,并在这种情况下将该对象(ExtractSourceQueryOB)添加到最终列表中。

private List<ExtractSourceQueryOB> checkRequiredQueries(List<ExtractSourceQueryOB> extractSourceQueryList, ExtractElement extractElement) {
            Set<ExtractSourceQueryOB> queryList =   new HashSet();
            Set<String> querySet = new HashSet();
            fillUsedSymbolList(querySet, extractElement);

            for(ExtractSourceQueryOB extractSourceQuery : extractSourceQueryList) {
                if(extractSourceQuery.getMaster() != null ) {
                    for(ExtractSourceQueryOB extractSourceQuery2 : extractSourceQueryList) {
                        if(extractSourceQuery.getMaster().equals(extractSourceQuery2.getSymbol())){
                            queryList.add(extractSourceQuery2);
                        }
                    }
                }
            }
             for (ExtractSourceQueryOB extractSourceQuery : extractSourceQueryList) {
                for (String s : querySet) {
                    if (extractSourceQuery.getSymbol().equalsIgnoreCase(s)) {
                        queryList.add(extractSourceQuery);
                    }
                }
            }
            return new ArrayList<>(queryList);
        }

我怎样才能简化这种方法?

标签: java

解决方案


for您可以通过将该代码与第一个代码组合来消除第二个。喜欢,

for(ExtractSourceQueryOB extractSourceQuery : extractSourceQueryList) {
    if(extractSourceQuery.getMaster() != null ) {
        for(ExtractSourceQueryOB extractSourceQuery2 : extractSourceQueryList) {
            if(extractSourceQuery.getMaster().equals(extractSourceQuery2.getSymbol())){
                queryList.add(extractSourceQuery2);
            }
        }
    }
    for (String s : querySet) {
        if (extractSourceQuery.getSymbol().equalsIgnoreCase(s)) {
            queryList.add(extractSourceQuery);
        }
    }
}

推荐阅读