设计循环的更好方法

时间:2010-08-26 02:10:10

标签: java loops

我想知道有没有更好的方法来设计循环。如你所见,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一起去?

由于

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);
}