Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 957
Sarika.S Avatar asked Sep 22 '12 08:09

Sarika.S


People also ask

How do you sort a list of objects based on an attribute of the objects in Java 8?

Java 8 introduced a sort method in the List interface which can use a comparator. The Comparator. comparing() method accepts a method reference which serves as the basis of the comparison. So we pass User::getCreatedOn to sort by the createdOn field.

How do you sort an array of objects based on a property in Java?

To sort an Object by its property, you have to make the Object implement the Comparable interface and override the compareTo() method. Lets see the new Fruit class again. The new Fruit class implemented the Comparable interface, and overrided the compareTo() method to compare its quantity property in ascending order.


1 Answers

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()

like image 56
Jiri Kremser Avatar answered Sep 20 '22 15:09

Jiri Kremser