我有一个返回Map<Id, List<Id>>
以下是方法:
private Map<Id, List<Id>> getDbrToAccountMap(Set<Id> dbrIds) {
Map<Id, List<Id>> dbrAccountMap = new Map<Id, List<Id>>();
List<Id> accountIds = new List<Id>();
for(DBR_Group_Member__c member : [select Id, Contact__c, Contact__r.AccountId, DBR__c from DBR_Group_Member__c where DBR__c in: dbrIds]) {
if(accountIds.isEmpty()) {
accountIds = new List<Id>();
dbrAccountMap.put(member.DBR__c, accountIds);
}
accountIds.add(member.Contact__r.AccountId);
}
return dbrAccountMap;
}
我只想添加到accountIds列表中,以获取唯一的DBR_ c和联系人的唯一帐户 _c
例如,如果我的DBR编号为:
<33> 3333,联系人是Acme帐户上的John Smith(添加到列表中)接下来我有
<33> 3333,联系人是Acme帐户上的Jane Smith(不要添加到列表中)接下来我有
<33> 3333,联系人是Big Company帐户上的Bob Smith(添加到列表中)接下来我有
<33> 3333,联系人是大公司帐户上的Doug Smith(不要添加到列表中)帐户的DBR应该是不同的。
在我的方法中,我将返回accountIds,但它们并不基于DBR。我必须要小心,因为如果DBR编号不同,我不想删除列表中的重复accountId。这将是列表中的有效元素。
任何帮助都将不胜感激。
感谢。
答案 0 :(得分:3)
您可以使用以下本地设置或使用Map < Id, Set < Id >>
作为您的解决方案来解决此问题
返回值。
private Map < Id, List < Id >> getDbrToAccountMap(Set < Id > dbrIds) {
Map < Id, List < Id >> dbrAccountMap = neenter code herew Map < Id, List < Id >> ();
Set < String > alreadyExistSet = new Set < String > ();
List < Id > accountIds = new List < Id > ();
for (DBR_Group_Member__c member: [select Id, Contact__c, Contact__r.AccountId, DBR__c from DBR_Group_Member__c where DBR__c in : dbrIds]) {
if (dbrAccountMap.get() == null) {
dbrAccountMap.put(member.DBR__c, new List < Id > );
}
if (!alreadyExistSet.contains('' + member.DBR__c + member.Contact__r.AccountId)) {
dbrAccountMap.get(member.DBR__c).add(member.Contact__r.AccountId);
alreadyExistSet.add('' + member.DBR__c + member.Contact__r.AccountId);
}
}
return dbrAccountMap;
}