One of the common interview question is "What are differences between Comparator and Comparable". or "How will you sort collection of employee objects by its id or name". For that we can use two interfaces, i.e., Comparator and Comparable. Before we actually see differences,let me give you brief introduction of both.
Comparable interface
Class whose objects to be sorted must implement this interface. In this, we have to implement compareTo(Object) method.
Comparator interface
The class whose objects to be sorted do not need to implement this interface. Some third class can implement this interface to sort. E.g., xyz class can implement Comparator interface to sort collection of ABC object by id , by name etc
Here is a simple example using comparator interface sorted a simple list with custom objects...
Program :
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class CollectionEmployee implements Comparator { /** * @param args */ public int empID; public String empName; public CollectionEmployee(int eid, String ename) { empID = eid; empName = ename; } public int compare(CollectionEmployee object1, CollectionEmployee object2) { // TODO Auto-generated method stub return ((object1.empID > object2.empID) ? 1 : 0); } public static void main(String[] args) { List empList = new ArrayList (); empList.add(new CollectionEmployee(100, "saurabh")); empList.add(new CollectionEmployee(300, "Anirudh")); empList.add(new CollectionEmployee(200, "Babu")); System.out.println("----list as it is ------"); for (CollectionEmployee emp : empList) { System.out.println("No: " + emp.empID + " Name: " + emp.empName); } System.out.println("----Sorted by id------"); Collections.sort(empList, new CollectionEmployee(200, "hari")); for (CollectionEmployee emp : empList) { System.out.println("No: " + emp.empID + " Name: " + emp.empName); } System.out.println("----Sortd by name-----------"); // Sort by name Collections.sort(empList, new CollectionEmployee(200, "hari") { @Override public int compare(CollectionEmployee o1, CollectionEmployee o2) { return o1.empName.compareTo(o2.empName); } }); for (CollectionEmployee emp : empList) { System.out.println("No: " + emp.empID + " Name: " + emp.empName); } } }Output :
----list as it is ------
No: 100 Name: saurabh
No: 300 Name: Anirudh
No: 200 Name: Babu
----Sorted by id------
No: 100 Name: saurabh
No: 200 Name: Babu
No: 300 Name: Anirudh
----Sortd by name-----------
No: 300 Name: Anirudh
No: 200 Name: Babu
No: 100 Name: saurabh
Reference : [1]
Thursday, January 02, 2014
//
Labels:
Java
//
0
comments
//
0 comments to "Sorting a list using comparator (Difference between Comparator and Comparable in Java)"
Popular Posts
-
The best solution to know about these init levels is to understand the " man init " command output on Unix. There are basically 8...
-
How to Unlock BSNL 3G data card to use it with Airtel and Vodafone Model no : LW272 ? How to unlock BSNL 3G data card( Model no : LW272 )us...
-
How to transfer bike registration from one State to other (Karnataka to Andhra)?? Most of us having two wheelers purchased and registered in...
-
ఓం శ్రీ స్వామియే శరణం ఆయ్యప్ప!! Related posts : Trip to Sabarimala - Part 1 Trip to Sabarimala - Part 2 Ayappa Deeksha required things...
-
Following are some of interesting blogs I found till now ...please comment to add your blog here. Blogs in English : http://nitawriter.word...
Popular posts
- Airtel and vodafone GPRS settings for pocket PC phones
- Andhra 2 America
- Ayyappa Deeksha required things
- Blogs I watch !
- Captions for your bike
- DB2 FAQs
- Deepavali Vs The Goddes of sleep
- ETV - Dhee D2 D3
- Evolution of smoking in India Women
- How to make credit card payments?
- init 0, init 1, init 2 ..
- Java-J2EE interview preparation
- mCheck Application jar or jad download
- My SQL FAQs
- My Travelogues
- Old is blod - New is italic
- Online pay methids for credit cards
- Oracle FAQs
- Pilgrimages
- Smoking in Indian Women
- Technology Vs Humans
- Twitter feeds for all Telugu stars on single page.
- Unix best practices
- Unix FAQs
Post a Comment
Whoever writes Inappropriate/Vulgar comments to context, generally want to be anonymous …So I hope U r not the one like that?
For lazy logs, u can at least use Name/URL option which doesn’t even require any sign-in, The good thing is that it can accept your lovely nick name also and the URL is not mandatory too.
Thanks for your patience
~Krishna(I love "Transparency")