import java.util.*;
import java.lang.*;
import java.io.*;
public class Main
{
public static class Person {
private String firstName, lastName
;
this.firstName = Objects.requireNonNull(firstName);
this.lastName = Objects.requireNonNull(lastName);
this.age = age;
}
public void setFirstName
(String firstname
) { this.firstName = Objects.requireNonNull(firstName);
}
public String getFirstName
(){ return firstName
;}
public void setLastName
(String lastName
) { this.lastName = Objects.requireNonNull(lastName);
}
public String getLastName
() { return lastName
;}
public void setAge
(Integer age
) { this.
age=age
;} public Integer getAge
(){ return age
;}
return firstName+" "+lastName+" with age:"+age;
}
}
{
List<Person> people = new ArrayList<>();
people.add(new Person("Nom","Faux",null));
people.add(new Person("Toto", "Tata", 32));
people.add(new Person("Nom", "Prenom", 44));
people.add(new Person("Nom", "Prenom", null));
.comparing(Person::getFirstName)
.thenComparing(Person::getLastName)
people.
stream().
forEach(System.
out::println
); }
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgpwdWJsaWMgY2xhc3MgTWFpbgp7CglwdWJsaWMgc3RhdGljIGNsYXNzIFBlcnNvbiB7CgkJcHJpdmF0ZSBTdHJpbmcgZmlyc3ROYW1lLCBsYXN0TmFtZTsKCQlwcml2YXRlIEludGVnZXIgYWdlOwoJCQoJCXB1YmxpYyBQZXJzb24oU3RyaW5nIGZpcnN0TmFtZSwgU3RyaW5nIGxhc3ROYW1lLCBJbnRlZ2VyIGFnZSl7CgkJCXRoaXMuZmlyc3ROYW1lID0gT2JqZWN0cy5yZXF1aXJlTm9uTnVsbChmaXJzdE5hbWUpOwoJCQl0aGlzLmxhc3ROYW1lID0gT2JqZWN0cy5yZXF1aXJlTm9uTnVsbChsYXN0TmFtZSk7CgkJCXRoaXMuYWdlID0gYWdlOwoJCX0KCQkKCQlwdWJsaWMgdm9pZCBzZXRGaXJzdE5hbWUoU3RyaW5nIGZpcnN0bmFtZSkgeyAKCQkJdGhpcy5maXJzdE5hbWUgPSBPYmplY3RzLnJlcXVpcmVOb25OdWxsKGZpcnN0TmFtZSk7CgkJfQoJCXB1YmxpYyBTdHJpbmcgZ2V0Rmlyc3ROYW1lKCl7IHJldHVybiBmaXJzdE5hbWU7fQoJCQoJCXB1YmxpYyB2b2lkIHNldExhc3ROYW1lKFN0cmluZyBsYXN0TmFtZSkgeyAKCQkJdGhpcy5sYXN0TmFtZSA9IE9iamVjdHMucmVxdWlyZU5vbk51bGwobGFzdE5hbWUpOwoJCX0KCQlwdWJsaWMgU3RyaW5nIGdldExhc3ROYW1lKCkgeyByZXR1cm4gbGFzdE5hbWU7fQoJCQoJCXB1YmxpYyB2b2lkIHNldEFnZShJbnRlZ2VyIGFnZSkgeyB0aGlzLmFnZT1hZ2U7fQoJCXB1YmxpYyBJbnRlZ2VyIGdldEFnZSgpeyByZXR1cm4gYWdlO30KCQkKCQlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCl7CgkJCXJldHVybiBmaXJzdE5hbWUrIiAiK2xhc3ROYW1lKyIgd2l0aCBhZ2U6IithZ2U7CgkJfQoJCQoJfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlMaXN0PFBlcnNvbj4gcGVvcGxlID0gbmV3IEFycmF5TGlzdDw+KCk7CgkJcGVvcGxlLmFkZChuZXcgUGVyc29uKCJOb20iLCJGYXV4IixudWxsKSk7CgkJcGVvcGxlLmFkZChuZXcgUGVyc29uKCJUb3RvIiwgIlRhdGEiLCAzMikpOwoJCXBlb3BsZS5hZGQobmV3IFBlcnNvbigiTm9tIiwgIlByZW5vbSIsIDQ0KSk7CgkJcGVvcGxlLmFkZChuZXcgUGVyc29uKCJOb20iLCAiUHJlbm9tIiwgbnVsbCkpOwoJCUNvbXBhcmF0b3I8UGVyc29uPiBjb21wYXJhdG9yID0gQ29tcGFyYXRvcgoJCQkJLmNvbXBhcmluZyhQZXJzb246OmdldEZpcnN0TmFtZSkKCQkJCS50aGVuQ29tcGFyaW5nKFBlcnNvbjo6Z2V0TGFzdE5hbWUpCgkJCQkudGhlbkNvbXBhcmluZyhQZXJzb246OmdldEFnZSwgQ29tcGFyYXRvci5udWxsc0xhc3QoSW50ZWdlcjo6Y29tcGFyZVRvKSk7CgkJQ29sbGVjdGlvbnMuc29ydChwZW9wbGUsIGNvbXBhcmF0b3IpOwoJCXBlb3BsZS5zdHJlYW0oKS5mb3JFYWNoKFN5c3RlbS5vdXQ6OnByaW50bG4pOwoJfQp9