java - 使用许多 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);
}
我怎样才能简化这种方法?
解决方案
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);
}
}
}
推荐阅读
- asp.net-mvc - 从 ADFS 3.0 重定向回来后,asp.net MVC 应用程序上的会话集丢失
- c# - 每隔指定次数将字符串值拆分为数组的更简单方法是什么?
- ios - 尝试通过情节提要参考打开视图控制器时崩溃
- javascript - 从 json 输出图像到测试,作为问题的补充
- python - fastq 文件中的异常写入错误:标题移动到第 4 行,即质量得分值行
- reactjs - 笑话:如何在 onChange 方法中更新模拟函数的值?
- python - 将列添加到依赖于现有列及其 qcut bin 值的数据框
- node.js - 是否有可能在 typedi 中调用 Container.get() 内的构造函数?
- android - 如何使用 NanoHttp 将文件从 web 上传到 android web 服务器
- ios - iTunes Connect - 未发送测试飞行邀请以进行内部测试