如果记录是唯一的,则添加到列表

时间:2013-08-31 00:07:33

标签: salesforce apex-code

我有一个返回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。这将是列表中的有效元素。

任何帮助都将不胜感激。

感谢。

1 个答案:

答案 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;
}