import java.io.PrintStream;
import java.util.Comparator;
public class Main {
public static void main(String[] args) throws Exception {
Comparator<Person> comparator = (p1, p2) -> p1.firstName.compareTo(p2.firstName);
Person p1 = new Person("John", "Doe");
Person p2 = new Person("Alice", "Wonderland");
comparator.compare(p1, p2); // > 0
comparator.reversed().compare(p1, p2); // <0
}
}
/**
* Simple person object with first and last name.
*/
class Person implements Cloneable {
String firstName = null;
String lastName = null;
// constructors
public Person() {
}
public Person(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
// Person methods
public void println(PrintStream out) {
out.println(this.toString());
}
public int compareToLastNameThenFirstName(Person p) {
int result = 0;
result = this.getLastName().compareTo(p.getLastName());
if (result == 0) {
result = this.getFirstName().compareTo(p.getFirstName());
}
return result;
}
// implement Cloneable methods
@Override
public Person clone() {
Person cloneOf = new Person(firstName, lastName);
return cloneOf;
}
// implement Object methods
public boolean equals(Person p) {
if (this.firstName.equals(p.getFirstName()))
return false;
if (this.lastName.equals(p.getLastName()))
return false;
return true;
}
@Override
public String toString() {
return "(" + firstName + " " + lastName + ")";
}
// getters and setters
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}