From 10946280751d8dc4a070bcf3ff5676d6a258f8e9 Mon Sep 17 00:00:00 2001 From: 3009594 Date: Mon, 2 Dec 2024 23:46:24 +0100 Subject: [PATCH] =?UTF-8?q?=C3=9Cbungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/Testate/Stream/Country.java | 154 ++++++++++++++++++ Programmierung2/src/Testate/Stream/Movie.java | 37 +---- 2 files changed, 159 insertions(+), 32 deletions(-) create mode 100644 Programmierung2/src/Testate/Stream/Country.java diff --git a/Programmierung2/src/Testate/Stream/Country.java b/Programmierung2/src/Testate/Stream/Country.java new file mode 100644 index 0000000..d8c3143 --- /dev/null +++ b/Programmierung2/src/Testate/Stream/Country.java @@ -0,0 +1,154 @@ +package Testate.Stream; + +import java.util.*; +import java.util.stream.*; + +public class Country { + private String code; + private String name; + private String continent; + private double surfaceArea; + private int population; + private double gnp; + private int capital; + private List cities; + { + cities = new ArrayList<>(); + } + + public Country(String code, String name, String continent, int population, double surfaceArea, double gnp, + int capital) { + this.code = code; + this.name = name; + this.continent = continent; + this.surfaceArea = surfaceArea; + this.population = population; + this.capital = capital; + this.gnp = gnp; + } + + public String getCode() { + return code; + } + + public String getName() { + return name; + } + + public String getContinent() { + return continent; + } + + public double getSurfaceArea() { + return surfaceArea; + } + + public double getGnp() { + return gnp; + } + + public int getCapital() { + return capital; + } + + public void setPopulation(int population) { + this.population = population; + } + + public List getCities() { + return cities; + } + + @Override + public String toString() { + return "Country [ name=" + name + ", population=" + population + "]"; + } + + + public static void main(String[] args) { + // Städte + City city1 = new City(1, "Berlin", "DE", 3769000); + City city2 = new City(2, "Hamburg", "DE", 1841000); + City city3 = new City(3, "Munich", "DE", 1472000); + City city4 = new City(4, "Paris", "FR", 2161000); + City city5 = new City(5, "Lyon", "FR", 513000); + City city6 = new City(6, "Marseille", "FR", 861000); + City city7 = new City(7, "Madrid", "ES", 3223000); + City city8 = new City(8, "Barcelona", "ES", 1620000); + City city9 = new City(9, "New York", "US", 8419000); + City city10 = new City(10, "Los Angeles", "US", 3980000); + + // Länder + Country country1 = new Country("DE", "Germany", "Europe", 83100000, 357022, 38456.0, 1); + country1.getCities().addAll(Arrays.asList(city1, city2, city3)); + + Country country2 = new Country("FR", "France", "Europe", 67390000, 551695, 27775.0, 4); + country2.getCities().addAll(Arrays.asList(city4, city5, city6)); + + Country country3 = new Country("ES", "Spain", "Europe", 47350000, 505990, 12345.0, 7); + country3.getCities().addAll(Arrays.asList(city7, city8)); + + Country country4 = new Country("US", "United States", "North America", 331000000, 9833517, 211375.0, 9); + country4.getCities().addAll(Arrays.asList(city9, city10)); + + + + // Testliste für Länder + List countries = new ArrayList<>(); + countries.add(country1); + countries.add(country2); + countries.add(country3); + countries.add(country4); + + +// Map> a2 = countries.stream() +// .collect(Collectors.toMap(c -> c, ci -> ci.getCities())); + + Map a2_2 = countries.stream() + .collect(Collectors.toMap(c -> c, + c -> c.getCities().stream() + .max(Comparator.comparingInt(city -> city.getPopulation())) + .orElse(null) + )); + + a2_2.forEach((a,b) -> System.out.println( a + " " + b)); + } + +} + +class City { + private int id; + private String name; + private int population; + private String countryCode; + + public City(int id, String name, String countryCode, int population) { + this.id = id; + this.name = name; + this.population = population; + this.countryCode = countryCode; + } + + public int getId() { + return id; + } + + public String getName() { + return name; + } + + public int getPopulation() { + return population; + } + + public String getCountryCode() { + return countryCode; + } + + @Override + public String toString() { + return "City [id=" + id + ", name=" + name + ", population=" + population + ", countryCode=" + countryCode + + "]"; + }; + +} diff --git a/Programmierung2/src/Testate/Stream/Movie.java b/Programmierung2/src/Testate/Stream/Movie.java index 60d9090..4d677b4 100644 --- a/Programmierung2/src/Testate/Stream/Movie.java +++ b/Programmierung2/src/Testate/Stream/Movie.java @@ -1,14 +1,7 @@ package Testate.Stream; - -import static java.util.Map.Entry.comparingByValue; -import static java.util.stream.Collectors.counting; -import static java.util.stream.Collectors.groupingBy; - import java.util.*; import java.util.stream.Collectors; - - public class Movie { private int id; private String title; @@ -90,32 +83,12 @@ public class Movie { movies.add(movie1); movies.add(movie2); movies.add(movie3); - //movies.forEach(System.out::println); - - //Finde die Anzahl der Filme jedes Regisseurs. - Map anzahl = movies.stream() - .flatMap(s -> s.getDirectors().stream()) - .map(r -> r.getName()) - .collect(Collectors.groupingBy(name -> name, Collectors.counting())); - //anzahl.forEach((a,b) -> System.out.println(a + " " +b)); - - //Finde die Liste der Filme, die nur die Genres "Drama" und "Komödie" haben. - - List aufgabe7 = movies.stream() - .filter(f -> f.getGenres().stream().anyMatch(fil -> fil.getName().equalsIgnoreCase("Drama"))) - .collect(Collectors.toCollection(ArrayList::new)); - - // System.out.println(aufgabe7); - - var maxMovieCountByYear = - movies.stream() - .collect(groupingBy(Movie::getYear,counting())) - .entrySet() - .stream() - .max(comparingByValue()); - maxMovieCountByYear.ifPresent(System.out::println); - + //1. Finde die Anzahl der Filme jedes Regisseurs. + Map a1 = movies.stream() + .flatMap(m -> m.getDirectors().stream()) + .collect(Collectors.groupingBy(name -> name.getName(),Collectors.counting())); + a1.forEach((a,b) -> System.out.println(a + " " + b)); } }