所以我现在有点难过......我想要的功能涉及4个分层的for循环,这给了我带顶点的CPU超时错误。
我要做的是:获取salesforce组织中所有组的地图,其中键是组ID。然后获取所有组成员,然后查找哪些组成员属于每个组并添加到列表中,以便我可以通过组成员获取组的大小,但是无法通过阻止嵌套的映射找到方法for loops ...
我觉得2层循环几乎是必要的吗?
执行此操作后,我需要检查salesforce事件(事件关系)的所有受邀与会者与我刚刚找到的组的组成员列表,以及是否在与会者中找到所有人,然后将该组添加为在javascript端过滤的与会者。
但是,如果我能够有效地找出每个小组的小组成员,我或许可以弄清楚与会者的位置。
有没有人有任何建议使用地图,集和/或列表来执行此操作?或者为每个小组获得小组成员的任何不同方法?
提前谢谢! (P.S.在Apex工作,负责销售人员发展)。
这是我迄今为止所拥有的一种。第一个循环确实有嵌套循环,我改变了一点,但我的修改并不能完全解决问题。 **这些for循环集也已经在循环遍历所有事件的for循环中。
for(Integer x = 0; x < groupMemberList.size(); x++){
if(groupMap.containsKey(groupMemberList[x].GroupId)){
collectMembers.add(groupMemberList[x])
}
if(attendeeMap.containsKey(groupMemberList[x].UserOrGroupId)){
groupMembersInEvent.add(groupMemberList[x].UserOrGroupId);
}
}
for(Integer x = 0; x < relations.size(); x++){
for(Id memId : collectMembers){
if(relations[x].attendeeId == memId){
groupMembersInEvent.add(memId);
}
}
if(groupMembersInEvent.size() == collectMembers.size()){
attendee = new attendeeInfo();
//Another loop to loop through groups to get name for this group id? Is it necessary?
attendee.attendeeName = 'group';
attendee.attendeeId = uniqueGroupId;
relations.add(attendee);
}
}
groupMembersInEvent = new List<Id>();
collectMembers = new List<Id>();
}