import java.io.PrintStream; import java.util.Arrays; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) throws Exception { // Lambda List<Person> persons = Arrays.asList(new Person("B", "V"), new Person("R", "K")); Collections.sort(persons, (Person a, Person b) -> { return b.firstName.compareTo(a.firstName); }); Collections.sort(persons, (a, b) -> b.firstName.compareTo(a.firstName)); } } /** * 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; } }