How to Write Your Own Comparator
From Java Example Source Code
Contents |
[edit] Overview - How to Write Your Own Comparator
This Java example program shows how to create your own comparator.
[edit] Java Source Code
- Package: example.comparator
- File: EmpComparator.java
package example.comparator;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class EmpComparator implements Comparator {
public int compare(Object obj1, Object obj2) {
Person emp1 = (Person) obj1;
Person emp2 = (Person) obj2;
int nameComp = emp1.getFirstName().compareTo(emp2.getFirstName());
return ((nameComp == 0) ? emp1.getLastName().compareTo(emp2.getLastName()) : nameComp);
}public static void main(String args[]) {
String names[] = { "Bart", "Hugo", "Lisa", "Marge", "Homer", "Maggie", "Roy" };
// Convert to listList list = new ArrayList(Arrays.asList(names));
// Ensure list sortedCollections.sort(list);
System.out.println("Sorted list: [length: " + list.size() + "]");
System.out.println(list);
// Search for element in listint index = Collections.binarySearch(list, "Maggie");
System.out.println("Found Maggie @ " + index);
// Search for element not in listindex = Collections.binarySearch(list, "Jimbo Jones");
System.out.println("Didn't find Jimbo Jones @ " + index);
// Insertint newIndex = -index - 1;
list.add(newIndex, "Jimbo Jones");
System.out.println("With Jimbo Jones added: [length: " + list.size() + "]");
System.out.println(list);
// Min should be BartSystem.out.println(Collections.min(list));
// Max should be RoySystem.out.println(Collections.max(list));
Comparator comp = Collections.reverseOrder();
// Reversed Min should be RoySystem.out.println(Collections.min(list, comp));
// Reversed Max should be BartSystem.out.println(Collections.max(list, comp));
}}class Person implements Comparable {
String firstName, lastName;public Person(String f, String l) {
this.firstName = f;
this.lastName = l;
}public String getFirstName() {
return firstName;}public String getLastName() {
return lastName;}public String toString() {
return "[ name=" + firstName + ",name=" + lastName + "]";
}public int compareTo(Object obj) {
Person emp = (Person) obj;
int deptComp = firstName.compareTo(emp.getFirstName());
return ((deptComp == 0) ? lastName.compareTo(emp.getLastName()) : deptComp);
}public boolean equals(Object obj) {
if (!(obj instanceof Person)) {
return false;
}Person emp = (Person) obj;
return firstName.equals(emp.getFirstName()) && lastName.equals(emp.getLastName());
}}
[edit] What Result You Can Get
Run the program, you will get:
Sorted list: [length: 7] [Bart, Homer, Hugo, Lisa, Maggie, Marge, Roy] Found Maggie @ 4 Didn't find Jimbo Jones @ -4 With Jimbo Jones added: [length: 8] [Bart, Homer, Hugo, Jimbo Jones, Lisa, Maggie, Marge, Roy] Bart Roy Roy Bart
[edit] Required External Libraries and/or Files for this Java Example
Need nothing.
[edit] How to Run this Java Example Program
We recommend running this Java example program with Eclipse.
For assistance in working with Eclipse, please see How to Run Java Program with Eclipse.
It's fairly easy.
[edit] Question & Answer
Any question?
Click edit and post your question or answer here.
import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List;
