我想知道有没有更好的方法来设计循环。如你所见,function1和function2的代码几乎相似,希望得到Hash Map。
**当前代码1 **
//Field
ResultSet rs = null;
HashMap<Object, Object> hashMap1;
HashMap<Object, Object> hashMap2;
if(somecondition)
{
function1()
}
else
{
function2();
}
void function1()
{
while(rs.next)
{
hashMap1 = someClass.getData1();
hashMap2 = someClass.getData2();
// compareHashMap
}
}
void function2()
{
while(rs.next)
{
hashMap1 = someClass.getModfiedData1();
hashMap2 = someClass.getModfiedData2();
// compareHashMap
}
}
另一种方式(短而甜)2
while(rs.next)
{
if(somecondition)
{
hashMap1 = someClass.getData1();
hashMap2 = someClass.getData2();
}
else
{
hashMap1 = someClass.getModfiedData1();
hashMap2 = someClass.getModfiedData2();
}
// compareHashMap
}
问题:
如果DB中有10000条以上的记录,那么最好是1吗?
有没有替代设计,或者我和No 2一起去?
由于
答案 0 :(得分:3)
在第一个示例中,您检查一次条件,然后迭代N条记录。在示例2中,您将迭代N条记录以及执行N条件检查。如果这是需要针对每个单独记录检查的条件,则第二个循环是要使用的循环。否则,如果这是一个只需要检查一次的条件......为什么要添加不必要的检查条件N次的开销?
答案 1 :(得分:2)
我认为更简单的方法是将“somecondition”设置为在someClass上设置的属性,然后使用一个方法调用以获取数据。像
这样的东西someClass.someCondition = somecondition
while(rs.next)
{
hashMap1 = someClass.getMyData1();
hashMap2 = someClass.getMyData2();
}
或者,您可以将变量传递给函数
while(rs.next)
{
hashMap1 = someClass.getMyData1(somecondition);
hashMap2 = someClass.getMyData2(somecondition);
}