Search code examples
javasortingcollections

Sort a Java collection object based on one field in it


I have the following collection:

Collection<AgentSummaryDTO> agentDtoList = new ArrayList<AgentSummaryDTO>();

Where AgentSummaryDTO looks like this:

public class AgentSummaryDTO implements Serializable {
    private Long id;
    private String agentName;
    private String agentCode;
    private String status;
    private Date createdDate;
    private Integer customerCount;
}

Now I have to sort the collection agentDtoList based on the customerCount field, how to achieve this?


Solution

  • here is my "1liner":

    Collections.sort(agentDtoList, new Comparator<AgentSummaryDTO>(){
       public int compare(AgentSummaryDTO o1, AgentSummaryDTO o2){
          return o1.getCustomerCount() - o2.getCustomerCount();
       }
    });
    

    UPDATE for Java 8: For int datatype

     Collections.sort(agentDtoList, (o1, o2) -> o1.getCustomerCount() - o2.getCustomerCount());
    

    or even:

     Collections.sort(agentDtoList, Comparator.comparing(AgentSummaryDTO::getCustomerCount));
    

    For String datatype (as in comment)

    Collections.sort(list, (o1, o2) -> (o1.getAgentName().compareTo(o2.getAgentName())));
    

    ..it expects getter AgentSummaryDTO.getCustomerCount()