Comparator List Sorting
In this example showing how to sort objects in the List by using a comparator. Primitive Type List, Wrapper Classes Type List can be sorted by using the Collection.sort(), but Object type List can’t be sorted. To achieve this we can use either Comparator and Comparable.
Comparator
A Comparator interface is used to order the objects of a specific class. This interface is found in java.util package. It contains two methods;
- compare(Object obj1,Object obj2)
- equals(Object element).
DataVO.java
package com.narayanatutorial.JavaComparatorSorting; public class DataVO { private String startdate; private String name; public String getStartdate() { return startdate; } public void setStartdate(String startdate) { this.startdate = startdate; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
ComparatorSortingByName.java
package com.narayanatutorial.JavaComparatorSorting; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class ComparatorSortingByName { public static void main(String[] args) { DataVO vo = null; List<DataVO> list = new ArrayList<DataVO>(); vo = new DataVO(); vo.setName("Tutorial"); vo.setStartdate("2020-01-17"); list.add(vo); vo = new DataVO(); vo.setName("Narayana"); vo.setStartdate("2020-01-19"); list.add(vo); vo = new DataVO(); vo.setName("Swamy"); vo.setStartdate("2020-01-18"); list.add(vo); System.out.println("****Before Sorting****"); list.stream().forEach(datavo -> System.out.println(datavo.getName())); // Ascending order Collections.sort(list, new Comparator<DataVO>() { public int compare(DataVO s1, DataVO s2) { return (s1.getName().compareTo(s2.getName())); } }); System.out.println("****Asecnding After Sorting****"); list.stream().forEach(datavo -> System.out.println(datavo.getName())); // Descending order Collections.sort(list, new Comparator<DataVO>() { public int compare(DataVO s1, DataVO s2) { return (s2.getName().compareTo(s1.getName())); } }); System.out.println("****Desecnding After Sorting****"); list.stream().forEach(datavo -> System.out.println(datavo.getName())); } }
Output
****Before Sorting**** Tutorial Narayana Swamy ****Asecnding After Sorting**** Narayana Swamy Tutorial ****Desecnding After Sorting**** Tutorial Swamy Narayana
Get full source code from Git.
Hello! I am Narayanaswamy founder and admin of narayanatutorial.com. I have been working in the IT industry for more than 12 years. NarayanaTutorial is my web technologies blog. My specialties are Java / J2EE, Spring, Hibernate, Struts, Webservices, PHP, Oracle, MySQL, SQLServer, Web Hosting, Website Development, and IAM(ForgeRock) Specialist
I am a self-learner and passionate about training and writing. I am always trying my best to share my knowledge through my blog.