Home > Back-end >  Get Unique Values from a list of Objects
Get Unique Values from a list of Objects

Time:11-23

Public Class Related Practice{ String Name; Integer id; }

Given a list of 'Related Practice' Objects, I want to extract unique 'Name' values(Distinct values) from the List .

I made an attempt, but it doesn't work for all cases, if anyone has any better ideas ?

//This method return unique values from a list
    private static List<Related_Practice__c> getUniqueValues(List<Related_Practice__c> listInput){
        List<Related_Practice__c> listOutput = new List<Related_Practice__c>();
        
        for(Integer i = 0; i<listInput.size();i  ){
            for(Integer j = 0;j<listInput.size();j  ){
                if(i != j){
                   if(listInput[j].Practice_Name__c == listInput[i].Practice_Name__c){
                    
                    listInput.remove(j);
                    }
                }
            }
        }
        listOutput.addAll(listInput);
        return listOutput;
    }

`

CodePudding user response:

You can make use of Map instead of using List

//This method return unique values from a list
    private static List<Related_Practice__c> getUniqueValues(List<Related_Practice__c> listInput){
        
        Map<String,Related_Practice__c> listOutputMap = new Map<String,Related_Practice__c>();
        for(Integer i = 0; i<listInput.size();i  ){
            if(!listOutputMap.containsKey(listInput[i].Practice_Name__c)){
                listOutputMap.put(listInput[i].Practice_Name__c,listInput[i])
            }
           
        }
        
        return listOutputMap.values();
    }
  • Related