Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 181
  • Last Modified:

How to aggregate values in a list by specific elements

I'm using the salesforce (apex) language, so I'm posting in the java group since apex is a derivative of the java language.  I hope someone can help.

I have a batch program I'm working on that contains a list of sobjects that haven't been inserted and I need to loop over the list and find the elements in the list that have the same fund and contact and aggregate several fields. Once I have the new list, then I do the insert.

I've been struggling on how to correctly loop over my list to find the same elements by fund and contact and then do the aggregation of the currency fields? The first issue is that the list isn't sorted so how do I find the correct elements to aggregate the values?

This is the pattern I was tyring, but it doesn't work.

List<My_SObject__c> listToInsert = new List<My_SObject__c>();
String fundName = '';
Id contactId = null;
for(My_SObject__c obj : tempList) {
    if(obj.FundName__c = fundName && obj.Contact__c == contactId) {
        obj.MyCurrencyFieldToAggregate__c += obj.MyCurrencyFieldToAggregate__c;
        listToInsert.add(obj);
    }
 fundName = obj.FundName__c;
 contactId = obj.Contact__c;
}

Open in new window


Any help is appreciated.
Thanks.
0
-Dman100-
Asked:
-Dman100-
  • 2
1 Solution
 
CEHJCommented:
You could aggregate by using Set operations with a wrapper class. Better to demonstrate: run the following and note the aggregation by 'fund' and 'contact'
Sales.java
SalesWrapper.java
0
 
-Dman100-Author Commented:
Hi CEHJ,

Thanks for the example, I'm looking at the code and trying to decipher what it is doing.  Can you explain the aggregation portion?  Is the aggregation occurring in the SalesWrapper class in the two overridden methods?

Thanks for your help!  I very much appreciate it!
Regards.
0
 
CEHJCommented:
The aggregation is occurring as a result of the wrapper class implementing equals using the key criteria of fund and contact. It ignores any other attributes. Equality is met by fund and contact matching
0

Featured Post

Restore individual SQL databases with ease

Veeam Explorer for Microsoft SQL Server delivers an easy-to-use, wizard-driven interface for restoring your databases from a backup. No expert SQL background required. Web interface provides a complete view of all available SQL databases to simplify the recovery of lost database

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now