package questions.section2;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class S206LambdaForCompositeFunction {
static class Person {
private String first;
private String last;
public Person(String first, String last) {
this.first = first;
this.last = last;
}
public String getFirst() {
return first;
}
public String getLast() {
return last;
}
public String toString() {
return "[" + first + " " + last + "]";
}
}
public S206LambdaForCompositeFunction() {
sortPerson();
}
private void sortPerson() {
List<Person> persons = Arrays.asList(
new Person("James", "Brown"),
new Person("David", "Crosby"),
new Person("James", "Taylor"),
new Person("Jackson", "Brown"),
new Person("Neil", "Young"),
new Person("Coco", "Taylor")
);
Comparator<Person> comparator = new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
// 姓で比較
String last1 = p1.getLast();
String last2 = p2.getLast();
int result = last1.compareTo(last2);
if (result != 0) {
return result;
} else {
// 姓が同じ場合、名で比較
String first1 = p1.getFirst();
String first2 = p2.getFirst();
return first1.compareTo(first2);
}
}
};
Collections.sort(persons, comparator);
System.out.println(persons);
}
public static void main(String... args) {
new S206LambdaForCompositeFunction();
}
}