Comparator interface lies in java.util package. It is used to short object in defined order i.e. sort two objects based on defined criteria.
The compare(Object o1, Object o2) method of Comparator interface needs to be implemented for this purpose, which compares two objects and returns an integer, depending on the comparison.
Decision can be taken based on below returned value:
- +VE = If o1 is greater than o2.
- -VE = If o1 is less than o1.
- 0 VE = If o1 equals to o2.
You need to call
The compare Method
By overriding compare( ), you can alter the way that objects are ordered. For example, to sort in a reverse order, you can create a comparator that reverses the outcome of a comparison.
Example of Comparator:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
package com.codenuclear; public class ComputerLanguage { String name; int complexity; public ComputerLanguage(String name, int complexity) { super(); this.name = name; this.complexity = complexity; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getComplexity() { return complexity; } public void setComplexity(int complexity) { this.complexity = complexity; } @Override public String toString() { return "ComputerLanguage [name=" + name + ", complexity=" + complexity + "]"; } } |
0 1 2 3 4 5 6 7 8 9 10 11 12 13 |
package com.codenuclear; import java.util.Comparator; public class ComputerLanguageComparator implements Comparator<ComputerLanguage> { @Override public int compare(ComputerLanguage o1, ComputerLanguage o2) { return (o1.getName()).compareTo(o2.getName()); } } |
0 1 2 3 4 5 6 7 8 9 10 11 12 13 |
package com.codenuclear; import java.util.Comparator; public class LanguageComplexityComparator implements Comparator<ComputerLanguage> { @Override public int compare(ComputerLanguage o1, ComputerLanguage o2) { return o1.getComplexity() - o2.getComplexity(); } } |
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
package com.codenuclear; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ComparatorSample { public static void main(String[] args) { ComputerLanguage java = new ComputerLanguage("Java", 9); ComputerLanguage clang = new ComputerLanguage("C", 10); ComputerLanguage cpp = new ComputerLanguage("C++", 10); ComputerLanguage python = new ComputerLanguage("Python", 7); ComputerLanguage php = new ComputerLanguage("PHP", 5); List<ComputerLanguage> list = new ArrayList<ComputerLanguage>(); list.add(java); list.add(clang); list.add(cpp); list.add(python); list.add(php); System.out.println("List of unsorted languages:" + list); Collections.sort(list, new ComputerLanguageComparator()); System.out.println("List of sorted languages by name:" + list); Collections.sort(list, new LanguageComplexityComparator()); System.out.println("List of sorted languages by complexity:" + list); } } |
Output: