Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // file App.java
- package personoop;
- import java.time.LocalDate;
- public class App {
- public static void testPerson(Person[] people, LocalDate now) {
- Object[] sortedByAge = Person.sortByAge(people);
- printResult(sortedByAge);
- Object[] filteredAndSorted = Person.filterOver18AndSortByLastNameAndAge(people, now);
- printResult(filteredAndSorted);
- }
- private static void printResult(Object[] sortedPeople) {
- StringBuilder result = new StringBuilder();
- for (Object person : sortedPeople) {
- result.append(person.toString());
- result.append(",");
- }
- result.deleteCharAt(result.length() - 1);
- System.out.println(result);
- }
- }
- // file Person.java
- package personoop;
- import java.time.LocalDate;
- import java.time.Period;
- import java.util.Arrays;
- import java.util.Collections;
- import java.util.Comparator;
- public class Person {
- private final String id;
- private final LocalDate birthdate;
- private final String firstName;
- private final String lastName;
- public Person(String id, LocalDate birthdate, String firstName, String lastName) {
- this.id = id;
- this.birthdate = birthdate;
- this.firstName = firstName;
- this.lastName = lastName;
- }
- public String getLastName() {
- return lastName;
- }
- public int getAge() {
- Period period = Period.between(this.birthdate, LocalDate.now());
- return period.getYears();
- }
- public int getAge(LocalDate date) {
- Period period = Period.between(this.birthdate, date);
- return period.getYears();
- }
- public static Object[] sortByAge(Person[] people) {
- return Arrays.stream(people)
- .sorted(Collections.reverseOrder(Comparator.comparingInt(Person::getAge)))
- .toArray();
- }
- public static Object[] filterOver18AndSortByLastNameAndAge(Person[] people, LocalDate date) {
- return Arrays.stream(people)
- .filter(person -> person.getAge(date) >= 18)
- .sorted(Comparator.comparing(Person::getLastName).reversed()
- .thenComparing(person -> person.getAge(date)).reversed())
- .toArray();
- }
- @Override
- public String toString() {
- return String.format("(%s,%s,%s,%d)",this.id, this.firstName, this.lastName, getAge());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement