From cdf69b0af612196b10e5a1f3f12ac89bc83e9c96 Mon Sep 17 00:00:00 2001 From: SteffenLm <33038091+SteffenLm@users.noreply.github.com> Date: Fri, 1 Sep 2023 01:00:41 +0200 Subject: [PATCH 1/4] Implement Solution --- Exercise.java | 6 ++++- FootballClub.java | 4 +++ Footballer.java | 6 +++++ Position.java | 6 +++++ Queries.java | 63 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 FootballClub.java create mode 100644 Footballer.java create mode 100644 Position.java create mode 100644 Queries.java diff --git a/Exercise.java b/Exercise.java index 3c092f9..31255c1 100644 --- a/Exercise.java +++ b/Exercise.java @@ -1,6 +1,10 @@ public class Exercise { public static void main(String[] args) { - // implement exercise here + Queries queries = new Queries(DataProvider.getFootballers()); + queries.getAllFootballersByBirthyear() + .values().stream() + .forEach(System.out::println); + // add more queries as you wish } } diff --git a/FootballClub.java b/FootballClub.java new file mode 100644 index 0000000..7f241af --- /dev/null +++ b/FootballClub.java @@ -0,0 +1,4 @@ + +public record FootballClub(String name, int positionInAllTimeTable, int pointsInAllTimeTable) { + +} diff --git a/Footballer.java b/Footballer.java new file mode 100644 index 0000000..18432d2 --- /dev/null +++ b/Footballer.java @@ -0,0 +1,6 @@ +import java.time.LocalDate; + +public record Footballer(String name, Position position, LocalDate birthDate, int sizeInCm, FootballClub footballClub, + int numberOfGames, int numberOfGoals) { + +} diff --git a/Position.java b/Position.java new file mode 100644 index 0000000..8c2d48b --- /dev/null +++ b/Position.java @@ -0,0 +1,6 @@ +public enum Position { + GOALKEEPER, + DEFENDER, + MIDFIELDER, + STRIKER; +} diff --git a/Queries.java b/Queries.java new file mode 100644 index 0000000..acdd5af --- /dev/null +++ b/Queries.java @@ -0,0 +1,63 @@ +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.OptionalDouble; +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +public class Queries { + + private ArrayList footballers; + + public Queries(ArrayList footballers) { + this.footballers = footballers; + } + + public int getTotalOfAllGoalsByMidfielders() { + return footballers.stream() + .filter(footballer -> footballer.position().equals(Position.MIDFIELDER)) + .mapToInt(footballer -> footballer.numberOfGoals()) + .sum(); + } + + public Optional getNameOfVfLWolfsburgFootballerWithMostPlayedGames() { + Predicate isFromWolfsburg = footballer -> footballer + .footballClub().equals(new FootballClub("VfL Wolfsburg", 3, 1145)); + Comparator sortNumberOfGoalsAscending = (footballer1, footballer2) -> Integer + .valueOf(footballer1.numberOfGames()).compareTo(footballer2.numberOfGames()); + + return footballers.stream() + .filter(isFromWolfsburg) + .max(sortNumberOfGoalsAscending); + } + + public List getNameOfAllFootballClubs() { + return footballers.stream() + .map(footballer -> footballer.footballClub()) + .distinct() + .toList(); + } + + public boolean isFootballerWithSizeInCmLT170AndNumbreOfGoalsBT0() { + return footballers.stream() + .anyMatch(footballer -> footballer.sizeInCm() < 170 && footballer.numberOfGoals() > 0); + } + + public Map> getAllFootballersByBirthyear() { + Function birthYear = footballer -> footballer.birthDate().getYear(); + return footballers.stream() + .collect(Collectors.groupingBy(birthYear)); + } + + public OptionalDouble getAverageNumberOfPointsFromAllBundesligaFootballClubs() { + return footballers.stream() + .map(footballer -> footballer.footballClub()) + .distinct() + .filter(footballClub -> footballClub.positionInAllTimeTable() != -1) + .mapToInt(footballClub -> footballClub.pointsInAllTimeTable()) + .average(); + } +} From a8cd586276ac19d705240e8399c329b9d19de2d0 Mon Sep 17 00:00:00 2001 From: github-actions <> Date: Thu, 31 Aug 2023 23:01:05 +0000 Subject: [PATCH 2/4] Google Java Format --- Exercise.java | 4 +- FootballClub.java | 5 +-- Footballer.java | 12 ++++-- Position.java | 8 ++-- Queries.java | 95 ++++++++++++++++++++++------------------------- 5 files changed, 59 insertions(+), 65 deletions(-) diff --git a/Exercise.java b/Exercise.java index 31255c1..2e73171 100644 --- a/Exercise.java +++ b/Exercise.java @@ -2,9 +2,7 @@ public class Exercise { public static void main(String[] args) { Queries queries = new Queries(DataProvider.getFootballers()); - queries.getAllFootballersByBirthyear() - .values().stream() - .forEach(System.out::println); + queries.getAllFootballersByBirthyear().values().stream().forEach(System.out::println); // add more queries as you wish } } diff --git a/FootballClub.java b/FootballClub.java index 7f241af..d672df3 100644 --- a/FootballClub.java +++ b/FootballClub.java @@ -1,4 +1 @@ - -public record FootballClub(String name, int positionInAllTimeTable, int pointsInAllTimeTable) { - -} +public record FootballClub(String name, int positionInAllTimeTable, int pointsInAllTimeTable) {} diff --git a/Footballer.java b/Footballer.java index 18432d2..f728485 100644 --- a/Footballer.java +++ b/Footballer.java @@ -1,6 +1,10 @@ import java.time.LocalDate; -public record Footballer(String name, Position position, LocalDate birthDate, int sizeInCm, FootballClub footballClub, - int numberOfGames, int numberOfGoals) { - -} +public record Footballer( + String name, + Position position, + LocalDate birthDate, + int sizeInCm, + FootballClub footballClub, + int numberOfGames, + int numberOfGoals) {} diff --git a/Position.java b/Position.java index 8c2d48b..725db90 100644 --- a/Position.java +++ b/Position.java @@ -1,6 +1,6 @@ public enum Position { - GOALKEEPER, - DEFENDER, - MIDFIELDER, - STRIKER; + GOALKEEPER, + DEFENDER, + MIDFIELDER, + STRIKER; } diff --git a/Queries.java b/Queries.java index acdd5af..e636a22 100644 --- a/Queries.java +++ b/Queries.java @@ -10,54 +10,49 @@ public class Queries { - private ArrayList footballers; - - public Queries(ArrayList footballers) { - this.footballers = footballers; - } - - public int getTotalOfAllGoalsByMidfielders() { - return footballers.stream() - .filter(footballer -> footballer.position().equals(Position.MIDFIELDER)) - .mapToInt(footballer -> footballer.numberOfGoals()) - .sum(); - } - - public Optional getNameOfVfLWolfsburgFootballerWithMostPlayedGames() { - Predicate isFromWolfsburg = footballer -> footballer - .footballClub().equals(new FootballClub("VfL Wolfsburg", 3, 1145)); - Comparator sortNumberOfGoalsAscending = (footballer1, footballer2) -> Integer - .valueOf(footballer1.numberOfGames()).compareTo(footballer2.numberOfGames()); - - return footballers.stream() - .filter(isFromWolfsburg) - .max(sortNumberOfGoalsAscending); - } - - public List getNameOfAllFootballClubs() { - return footballers.stream() - .map(footballer -> footballer.footballClub()) - .distinct() - .toList(); - } - - public boolean isFootballerWithSizeInCmLT170AndNumbreOfGoalsBT0() { - return footballers.stream() - .anyMatch(footballer -> footballer.sizeInCm() < 170 && footballer.numberOfGoals() > 0); - } - - public Map> getAllFootballersByBirthyear() { - Function birthYear = footballer -> footballer.birthDate().getYear(); - return footballers.stream() - .collect(Collectors.groupingBy(birthYear)); - } - - public OptionalDouble getAverageNumberOfPointsFromAllBundesligaFootballClubs() { - return footballers.stream() - .map(footballer -> footballer.footballClub()) - .distinct() - .filter(footballClub -> footballClub.positionInAllTimeTable() != -1) - .mapToInt(footballClub -> footballClub.pointsInAllTimeTable()) - .average(); - } + private ArrayList footballers; + + public Queries(ArrayList footballers) { + this.footballers = footballers; + } + + public int getTotalOfAllGoalsByMidfielders() { + return footballers.stream() + .filter(footballer -> footballer.position().equals(Position.MIDFIELDER)) + .mapToInt(footballer -> footballer.numberOfGoals()) + .sum(); + } + + public Optional getNameOfVfLWolfsburgFootballerWithMostPlayedGames() { + Predicate isFromWolfsburg = + footballer -> footballer.footballClub().equals(new FootballClub("VfL Wolfsburg", 3, 1145)); + Comparator sortNumberOfGoalsAscending = + (footballer1, footballer2) -> + Integer.valueOf(footballer1.numberOfGames()).compareTo(footballer2.numberOfGames()); + + return footballers.stream().filter(isFromWolfsburg).max(sortNumberOfGoalsAscending); + } + + public List getNameOfAllFootballClubs() { + return footballers.stream().map(footballer -> footballer.footballClub()).distinct().toList(); + } + + public boolean isFootballerWithSizeInCmLT170AndNumbreOfGoalsBT0() { + return footballers.stream() + .anyMatch(footballer -> footballer.sizeInCm() < 170 && footballer.numberOfGoals() > 0); + } + + public Map> getAllFootballersByBirthyear() { + Function birthYear = footballer -> footballer.birthDate().getYear(); + return footballers.stream().collect(Collectors.groupingBy(birthYear)); + } + + public OptionalDouble getAverageNumberOfPointsFromAllBundesligaFootballClubs() { + return footballers.stream() + .map(footballer -> footballer.footballClub()) + .distinct() + .filter(footballClub -> footballClub.positionInAllTimeTable() != -1) + .mapToInt(footballClub -> footballClub.pointsInAllTimeTable()) + .average(); + } } From bcb179ce4f7cc2072400396d4c9cac8c875d0065 Mon Sep 17 00:00:00 2001 From: SteffenLm <33038091+SteffenLm@users.noreply.github.com> Date: Thu, 5 Jun 2025 13:17:04 +0200 Subject: [PATCH 3/4] fix wrong solution --- Queries.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Queries.java b/Queries.java index e636a22..ab591e1 100644 --- a/Queries.java +++ b/Queries.java @@ -1,3 +1,4 @@ +import java.nio.file.OpenOption; import java.util.ArrayList; import java.util.Comparator; import java.util.List; @@ -23,14 +24,14 @@ public int getTotalOfAllGoalsByMidfielders() { .sum(); } - public Optional getNameOfVfLWolfsburgFootballerWithMostPlayedGames() { - Predicate isFromWolfsburg = - footballer -> footballer.footballClub().equals(new FootballClub("VfL Wolfsburg", 3, 1145)); - Comparator sortNumberOfGoalsAscending = - (footballer1, footballer2) -> - Integer.valueOf(footballer1.numberOfGames()).compareTo(footballer2.numberOfGames()); + public Optional getNameOfVfLWolfsburgFootballerWithMostPlayedGames() { + Predicate isFromWolfsburg = footballer -> footballer.footballClub() + .equals(new FootballClub("VfL Wolfsburg", 3, 1145)); + Comparator sortNumberOfGoalsAscending = (footballer1, footballer2) -> Integer + .valueOf(footballer1.numberOfGames()).compareTo(footballer2.numberOfGames()); - return footballers.stream().filter(isFromWolfsburg).max(sortNumberOfGoalsAscending); + return footballers.stream().filter(isFromWolfsburg).max(sortNumberOfGoalsAscending) + .map(footballer -> footballer.name()); } public List getNameOfAllFootballClubs() { From a8c2cd727c5c6ea1586b06af9d72a6aecb0f5844 Mon Sep 17 00:00:00 2001 From: github-actions <> Date: Thu, 5 Jun 2025 11:17:43 +0000 Subject: [PATCH 4/4] Google Java Format --- Queries.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Queries.java b/Queries.java index ab591e1..8ccce42 100644 --- a/Queries.java +++ b/Queries.java @@ -1,4 +1,3 @@ -import java.nio.file.OpenOption; import java.util.ArrayList; import java.util.Comparator; import java.util.List; @@ -25,12 +24,15 @@ public int getTotalOfAllGoalsByMidfielders() { } public Optional getNameOfVfLWolfsburgFootballerWithMostPlayedGames() { - Predicate isFromWolfsburg = footballer -> footballer.footballClub() - .equals(new FootballClub("VfL Wolfsburg", 3, 1145)); - Comparator sortNumberOfGoalsAscending = (footballer1, footballer2) -> Integer - .valueOf(footballer1.numberOfGames()).compareTo(footballer2.numberOfGames()); + Predicate isFromWolfsburg = + footballer -> footballer.footballClub().equals(new FootballClub("VfL Wolfsburg", 3, 1145)); + Comparator sortNumberOfGoalsAscending = + (footballer1, footballer2) -> + Integer.valueOf(footballer1.numberOfGames()).compareTo(footballer2.numberOfGames()); - return footballers.stream().filter(isFromWolfsburg).max(sortNumberOfGoalsAscending) + return footballers.stream() + .filter(isFromWolfsburg) + .max(sortNumberOfGoalsAscending) .map(footballer -> footballer.name()); }