【发布时间】:2011-09-13 12:17:53
【问题描述】:
您好,我认为这是一个非常简单的问题,但我现在无法解决;
有两种Objects-RuleObject,TaskObject
以下是RuleObject,TaskObject的定义
RuleObject
ruleID,RulePatternType,RulePrint
TaskObject
taskID,taskName,Org,ruleID
ruleArrayList是RuleObjects的所有对象
taskArrayList是TaskObjects的所有对象
最终的形式是获取TaskObjects使用的所有RuleObjects并由RuleObjects排列
如下图所示:
RuleObject.RulePatternType1
TaskName1 TaskOrg1 RUleObject.rulePrint1
TaskName2 TaskOrg2 RuleObject.rulePrint1
RuleObject.RulePatternType2
TaskName3 TaskOrg1 RUleObject.rulePrint2
TaskName4 TaskOrg2 RuleObject.rulePrint2
TaskName5 TaskOrg3 RUleObject.rulePrint2
TaskName6 TaskOrg4 RuleObject.rulePrint2
代码 sn-p:
List<TaskObject> taskArrayList = compModIF.getRecurringTasksForOrgsAndEffDate(allOrgIds, effDate);
List<RuleObject> ruleArrayList = compModIF.getComplianceTaskRecurrenceRules();
Map ruleTypes = new HashMap();
Map groupTaskTypes = new HashMap();
Map groupRecurRulesNames = new HashMap();
Map masterMapOfallMaps = new HashMap();
Map recurPrintMap = new HashMap();
Map recurPatternTypeMap = new HashMap();
List groupRecuringTaskTypesList = null;
Map filterRules = new HashMap();
List completedList = new ArrayList();
for(Iterator iter = ruleArrayList .iterator(); iter.hasNext();)
{
RuleObject ruleBase = (RuleObject)iter.next();
ruleTypes.put(ruleBase.getRecurRuleID(),ruleBase);
}
if (recurringTaskList != null)
{
for (Iterator it = taskArrayList .iterator(); it.hasNext();)
{
TaskObject aTaskDef = (TaskObject)it.next();
groupRecuringTaskTypesList = new ArrayList();
if(ruleTypes.containsKey(aTaskDef.getTaskRecurRuleIDAsLong()))
{
RuleObject ruleBase = (RuleObject)ruleTypes.get(aTaskDef.getTaskRecurRuleIDAsLong());
groupRecuringTaskTypesList.add(aTaskDef);
groupTaskTypes.put(ruleBase.getRecurRuleID(),groupRecuringTaskTypesList);
groupRecurRulesNames.put(ruleBase.getRecurRuleID(), ruleBase.getRecurRuleName());
if(ruleBase.getRecurPatternType()==ComplianceCodes.TASK_RECUR_PATTERN_TYPE_DAILY)
{
completedList= getDailyRecursCommentsAsCompleted(ruleBase.printRule());
recurPrintMap.put(ruleBase.getRecurRuleID(), completedList);
}
//groupRecuringTaskTypes = new ArrayList();
recurPatternTypeMap.put(ruleBase.getRecurRuleID(), ruleBase.getRecurPatternType());
}
}
}
这里的问题是对于 1 个规则 ID,有多个数组列表,因此我能够获得最后添加的列表。 任何人都可以为此提出更好的替代方案吗?
【问题讨论】:
-
如果您避免对所有变量(ruleTypes 等)使用原始类型,您的代码会更清晰。
-
尽可能使用通用地图。有一个映射,其键是规则或规则 ID,其值是任务列表列表。换句话说,
List<List<TaskObject>>