算法逻辑

时间:2012-01-12 13:04:32

标签: java algorithm hashmap

我遇到了问题,并没有在这里提出逻辑,希望你们能帮助我。有人在stackoverflow上问了同样的问题,我无法找到链接,它与发布的查询非常相似

我生成一份报告,用户根据该报告选择日期/日期 值将从数据库中获取并显示在报告中。 Apache poi用于生成excel报告。

我有4个字段/列

ID      Date        true/false   someaction

如果用户只选择一个或多个日期,程序将获取所有日期并将它们存储在Arraylist中,然后迭代它以将数据存储在数据库中所选日期

伪代码

 String checkLastCell = null;

    for (Date listOfdates : datesL){

            //query gets fired to the database by sending listOfdates as a parameter

            for ( T tt : t) {

                i = tt.getId(); //ID
                j = tt.getDate(); //Date
                k = tt.getTrueFalse(); // truefalse 


            and setting them on cells 

            for column l , i am writing some action based on the 
            l= Yes or No  //someaction Yes or No
  • 对于Id = 1,如果在truefalse列中设置了True,我需要在Someaction列中写入Yes

  • 在下一次迭代中,如果id = 2,并且在truefalse列中设置了False,我将在某个行列中写入No,

  • 如果在下一次迭代中,Id = 1并且在truefalse列中设置了False,我需要检查ID = 1的上一个操作,然后编写操作 - >否(因为它从True变为False)

  

if(lastcell是Null&& t.getTrueFalse()。equals(“true”)|| lastcell是   不是空的&& t.getTrueFalse()。等于( “真”))   if if(lastcell是Null&& t.getTrueFalse()。equals(“false”)||   lastcell不是null&& t.getTrueFalse()。equals(“false”)){设置   行动为NO}   .....这里需要写一些逻辑。

      i++; // increment the row       }
          }   }

我在撰写伪代码/算法时需要建议/帮助

1 个答案:

答案 0 :(得分:0)

您只需要一个HashMap(java)来保存包含ID的最后一行的索引。这是算法/实现。

List<Row> dbResults = getDatabaseResults(listOfDates);
HashMap<int, int> idToLastIndex = new HashMap<int, int>();
for(int x=0; x<dbResults.size(); x++) {
    // values
    i = dbResults[x].getID();
    j = dbResults[x].getDate();
    k = dbResults[x].getTrueFalse();
    // get action value
    if(idToIndex.containsKey(i) && k == dbResults.get(idToLastIndex.get(i)).getTrueFalse()) {
        // if there's an old value and it equals the new one
        a = "NO ACTION TAKEN";
    } else if(k == true) {
        a = "YES";
    } else {
        a = "NO";
    }
    idToLastIndex.put(i, x); // ID->Index
}

注意以上代码是在Web浏览器中编写的,未经过测试,可能存在语法错误。