From e5e1d8c1244879fc8bb7e389d937df058f10a7aa Mon Sep 17 00:00:00 2001 From: Gerd Marmitt Date: Tue, 14 May 2024 17:49:42 +0200 Subject: [PATCH] added copyrights, extended Freund-Demo --- .vscode/launch.json | 14 +++ Closure/src/Closure.java | 4 + .../src/DatenspeicherMinMax.java | 5 ++ DatenspeicherMinMax/src/Test.java | 5 ++ .../src/DatenspeicherMinMax2.java | 5 ++ DatenspeicherMinMax2/src/Test.java | 5 ++ .../.vscode/settings.json | 0 .../README.md | 0 .../src/DemoSortMehfachLambda.java | 87 +++++++++++++++++++ DemoSortMehfachLambda/src/Freund.java | 37 ++++++++ Dreieckstausch/src/Dreieckstausch.java | 5 ++ FreundesListe/src/Freund.java | 13 --- FreundesListe/src/FreundesListe.java | 43 --------- .../src/TaschenrechnerInt3.java | 5 ++ Teilnehmer/src/Teilnehmer.java | 7 ++ Teilnehmer2/src/Teilnehmer2.java | 8 ++ Teilnehmer3/src/Teilnehmer3.java | 6 +- Teilnehmer4/src/Teilnehmer4.java | 7 +- 18 files changed, 198 insertions(+), 58 deletions(-) rename {FreundesListe => DemoSortMehfachLambda}/.vscode/settings.json (100%) rename {FreundesListe => DemoSortMehfachLambda}/README.md (100%) create mode 100644 DemoSortMehfachLambda/src/DemoSortMehfachLambda.java create mode 100644 DemoSortMehfachLambda/src/Freund.java delete mode 100644 FreundesListe/src/Freund.java delete mode 100644 FreundesListe/src/FreundesListe.java diff --git a/.vscode/launch.json b/.vscode/launch.json index 4eafca6..e8d9cd9 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,6 +4,20 @@ // Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ + { + "type": "java", + "name": "DemoSortMehfachLambda", + "request": "launch", + "mainClass": "DemoSortMehfachLambda", + "projectName": "PR2-L_ada963eb" + }, + { + "type": "java", + "name": "FreundesListe", + "request": "launch", + "mainClass": "FreundesListe", + "projectName": "PR2-L_ada963eb" + }, { "type": "java", "name": "TaschenrechnerInt2", diff --git a/Closure/src/Closure.java b/Closure/src/Closure.java index 21b38fa..a4a7d8e 100644 --- a/Closure/src/Closure.java +++ b/Closure/src/Closure.java @@ -1,3 +1,7 @@ +/**Copyright (c) Balzert, H: "Java: Objektorientiert Programmieren" + * W3L-Verlag Dortmund, 3. Auflage, 2014 + * Closure, S. 340 +*/ public class Closure { diff --git a/DatenspeicherMinMax/src/DatenspeicherMinMax.java b/DatenspeicherMinMax/src/DatenspeicherMinMax.java index 5a9f985..29f4cb1 100644 --- a/DatenspeicherMinMax/src/DatenspeicherMinMax.java +++ b/DatenspeicherMinMax/src/DatenspeicherMinMax.java @@ -1,3 +1,8 @@ +/**Copyright (c) Balzert, H: "Java: Objektorientiert Programmieren" + * W3L-Verlag Dortmund, 3. Auflage, 2014 + * Einfache Klassenschablonen, S. 289 +*/ + public class DatenspeicherMinMax { private T min, max; diff --git a/DatenspeicherMinMax/src/Test.java b/DatenspeicherMinMax/src/Test.java index c15eec7..4b97f52 100644 --- a/DatenspeicherMinMax/src/Test.java +++ b/DatenspeicherMinMax/src/Test.java @@ -1,3 +1,8 @@ +/**Copyright (c) Balzert, H: "Java: Objektorientiert Programmieren" + * W3L-Verlag Dortmund, 3. Auflage, 2014 + * Einfache Klassenschablonen, S. 290 +*/ + public class Test { public static void main(String[] args) throws Exception { DatenspeicherMinMax dF = diff --git a/DatenspeicherMinMax2/src/DatenspeicherMinMax2.java b/DatenspeicherMinMax2/src/DatenspeicherMinMax2.java index 8fa3080..d441cf1 100644 --- a/DatenspeicherMinMax2/src/DatenspeicherMinMax2.java +++ b/DatenspeicherMinMax2/src/DatenspeicherMinMax2.java @@ -1,3 +1,8 @@ +/**Copyright (c) Balzert, H: "Java: Objektorientiert Programmieren" + * W3L-Verlag Dortmund, 3. Auflage, 2014 + * Einfache Klassenschablonen, S. 293 +*/ + public class DatenspeicherMinMax2> { private T min, max; diff --git a/DatenspeicherMinMax2/src/Test.java b/DatenspeicherMinMax2/src/Test.java index 719668f..a7d2549 100644 --- a/DatenspeicherMinMax2/src/Test.java +++ b/DatenspeicherMinMax2/src/Test.java @@ -1,3 +1,8 @@ +/**Copyright (c) Balzert, H: "Java: Objektorientiert Programmieren" + * W3L-Verlag Dortmund, 3. Auflage, 2014 + * Einfache Klassenschablonen, S. 289 +*/ + public class Test { public static void main(String[] args) throws Exception { DatenspeicherMinMax2 dF = diff --git a/FreundesListe/.vscode/settings.json b/DemoSortMehfachLambda/.vscode/settings.json similarity index 100% rename from FreundesListe/.vscode/settings.json rename to DemoSortMehfachLambda/.vscode/settings.json diff --git a/FreundesListe/README.md b/DemoSortMehfachLambda/README.md similarity index 100% rename from FreundesListe/README.md rename to DemoSortMehfachLambda/README.md diff --git a/DemoSortMehfachLambda/src/DemoSortMehfachLambda.java b/DemoSortMehfachLambda/src/DemoSortMehfachLambda.java new file mode 100644 index 0000000..555d2b3 --- /dev/null +++ b/DemoSortMehfachLambda/src/DemoSortMehfachLambda.java @@ -0,0 +1,87 @@ +/**Copyright (c) Balzert, H: "Java: Objektorientiert Programmieren" + * W3L-Verlag Dortmund, 3. Auflage, 2014 + * Beispiel für das Sortieren mit Lambda-Ausdrücken, S. 333 f. +*/ + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; + +public class DemoSortMehfachLambda { + public static void main(String[] args) throws Exception { + ArrayList eineListe = new ArrayList<>(); + + eineListe.add(new Freund("Meyer", "Hans", 42)); + eineListe.add(new Freund("Schulz", "Joe", 26)); + eineListe.add(new Freund("Bohn", "Helga", 17)); + eineListe.add(new Freund("Dorakov", "Johanna", 66)); + eineListe.add(new Freund("Müller", "Dirk", 27)); + + // Version (1) mit Lambda-Ausdruck + List aufsteigendesAlter = eineListe + .stream() + .sorted((freund1, freund2) -> freund1.altersUnterschied(freund2)) + .collect(Collectors.toList()); + + // Version (2) mit Methodenreferenz + druckeFreunde("Sortierung nach aufsteigendem Alter:", aufsteigendesAlter); + + aufsteigendesAlter = eineListe + .stream() + .sorted(Freund::altersUnterschied) + .collect(Collectors.toList()); + + druckeFreunde("Sortierung nach aufsteigendem Alter:", aufsteigendesAlter); + + // Version (3) Absteigendes Alter - Vertauschen der Parameter + aufsteigendesAlter = eineListe + .stream() + .sorted((freund1, freund2) -> freund2.altersUnterschied(freund1)) + .collect(Collectors.toList()); + + druckeFreunde("Sortierung nach absteigendem Alter:", aufsteigendesAlter); + + // Version (4) Absteigendes Alter mit reverse() + + Comparator aufsteigendAlter = (freund1, freund2) -> freund1.altersUnterschied(freund2); + Comparator absteigendAlter = aufsteigendAlter.reversed(); + + aufsteigendesAlter = eineListe + .stream().sorted(absteigendAlter) + .collect(Collectors.toList()); + + druckeFreunde("Sortierung nach absteigendem Alter:", aufsteigendesAlter); + + // Version (5) - Sortierung nach aufsteigendem Nachnamen: + + List aufsteigendNachnamen = eineListe.stream() + .sorted((freund1, freund2) -> freund1.getNachname().compareTo(freund2.getNachname())) + .collect(Collectors.toList()); + + druckeFreunde("Sortierung nach aufsteigenden Nachnamen:", aufsteigendNachnamen); + + // Version (6) - Mit funktionaler Schnittstelle + final Function nachName = freund -> freund.getNachname(); + + aufsteigendNachnamen = eineListe.stream().sorted(Comparator.comparing(nachName)) + .collect(Collectors.toList()); + + druckeFreunde("Sortierung nach aufsteigenden Nachnamen:", aufsteigendNachnamen); + + // Version 7 Sortierung zuerst nach Alter, dann nach Nachnamen + final Function nachAlter = freund -> freund.getAlter(); + + druckeFreunde("Sortierung aufsteigend zuerst nach Alter, " + + "dann nach Nachnamen: ", + eineListe.stream() + .sorted(Comparator.comparing(nachAlter).thenComparing(nachName)) + .collect(Collectors.toList())); + } + + private static void druckeFreunde(String titel, List freunde) { + System.out.println(titel); + freunde.forEach(System.out::println); + } +} diff --git a/DemoSortMehfachLambda/src/Freund.java b/DemoSortMehfachLambda/src/Freund.java new file mode 100644 index 0000000..7d80617 --- /dev/null +++ b/DemoSortMehfachLambda/src/Freund.java @@ -0,0 +1,37 @@ +/**Copyright (c) Balzert, H: "Java: Objektorientiert Programmieren" + * W3L-Verlag Dortmund, 3. Auflage, 2014 + * Beispiel für das Sortieren mit Lambda-Ausdrücken, S. 332 +*/ + +public class Freund { + private String nachname, vorname; + private int alter; + + public Freund(String nachname, String vorname, int alter) { + this.nachname = nachname; + this.vorname = vorname; + this.alter = alter; + } + + public String getVorname() { + return vorname; + } + + public String getNachname() { + return nachname; + } + + public int getAlter() { + return alter; + } + + public int altersUnterschied( + Freund einFreund) + { + return alter - einFreund.alter; + } + + public String toString() { + return String.format(("%s - %s - %s"), nachname, vorname, alter); + } +} diff --git a/Dreieckstausch/src/Dreieckstausch.java b/Dreieckstausch/src/Dreieckstausch.java index 5701576..cb130f4 100644 --- a/Dreieckstausch/src/Dreieckstausch.java +++ b/Dreieckstausch/src/Dreieckstausch.java @@ -1,3 +1,8 @@ +/**Copyright (c) Balzert, H: "Java: Objektorientiert Programmieren" + * W3L-Verlag Dortmund, 3. Auflage, 2014 + * Einfache Klassenschablonen, S. 296 +*/ + public class Dreieckstausch { public static void tausche(E [] f) { diff --git a/FreundesListe/src/Freund.java b/FreundesListe/src/Freund.java deleted file mode 100644 index f7966c1..0000000 --- a/FreundesListe/src/Freund.java +++ /dev/null @@ -1,13 +0,0 @@ -public class Freund { - int alter; - - public Freund(int alter) { - this.alter = alter; - } - - public int altersUnterschied( - Freund einFreund) - { - return alter - einFreund.alter; - } -} diff --git a/FreundesListe/src/FreundesListe.java b/FreundesListe/src/FreundesListe.java deleted file mode 100644 index f200d99..0000000 --- a/FreundesListe/src/FreundesListe.java +++ /dev/null @@ -1,43 +0,0 @@ -import java.util.ArrayList; -import java.util.Collection; -import java.util.Comparator; -import java.util.List; -import java.util.stream.Collector; -import java.util.stream.Collectors; - -public class FreundesListe { - public static void main(String[] args) throws Exception { - ArrayList eineListe = new ArrayList<>(); - - eineListe.add(new Freund(45)); - eineListe.add(new Freund(35)); - eineListe.add(new Freund(67)); - -/* Alternativen: - List aufsteigendesAlter = eineListe - .stream() - .sorted((freund1, freund2) -> freund1.altersUnterschied(freund2)) - .collect(Collectors.toList()); - - List aufsteigendesAlter = eineListe - .stream() - .sorted(Freund::altersUnterschied) - .collect(Collectors.toList()); -*/ - -Comparator aufsteigendAlter = (freund1, freund2) -> - freund1.altersUnterschied(freund2); -Comparator absteigendAlter = - aufsteigendAlter.reversed(); - - List aufsteigendesAlter = eineListe - .stream().sorted(absteigendAlter) - .collect(Collectors.toList()); - - ArrayList t = new ArrayList<>(aufsteigendesAlter); - - - for(Freund f : aufsteigendesAlter) - System.out.println(f.alter); - } -} diff --git a/TaschenrechnerInt3/src/TaschenrechnerInt3.java b/TaschenrechnerInt3/src/TaschenrechnerInt3.java index 15fe8ad..20ee5a9 100644 --- a/TaschenrechnerInt3/src/TaschenrechnerInt3.java +++ b/TaschenrechnerInt3/src/TaschenrechnerInt3.java @@ -1,3 +1,8 @@ +/**Copyright (c) Balzert, H: "Java: Objektorientiert Programmieren" + * W3L-Verlag Dortmund, 3. Auflage, 2014 + * Funktionale Schnittstellen, S. 341. +*/ + public class TaschenrechnerInt3 implements MathInteger { public static void main(String args []) { diff --git a/Teilnehmer/src/Teilnehmer.java b/Teilnehmer/src/Teilnehmer.java index 3933d26..49a6b0b 100644 --- a/Teilnehmer/src/Teilnehmer.java +++ b/Teilnehmer/src/Teilnehmer.java @@ -1,3 +1,10 @@ +/**Copyright (c) Balzert, H: "Java: Objektorientiert Programmieren" + * W3L-Verlag Dortmund, 3. Auflage, 2014 + * Demonstration des Unterschieds zwischen + * imperativen und deklarativem Programmieren + * Beispiel in Java 7, S. 320 +*/ + import java.util.ArrayList; public class Teilnehmer { diff --git a/Teilnehmer2/src/Teilnehmer2.java b/Teilnehmer2/src/Teilnehmer2.java index c1d149e..db75e93 100644 --- a/Teilnehmer2/src/Teilnehmer2.java +++ b/Teilnehmer2/src/Teilnehmer2.java @@ -1,3 +1,11 @@ +/**Copyright (c) Balzert, H: "Java: Objektorientiert Programmieren" + * W3L-Verlag Dortmund, 3. Auflage, 2014 + * Demonstration des Unterschieds zwischen + * imperativen und deklarativem Programmieren + * Beispiel in Java 8 + * Durchlaufen einer Liste, S. 323 f. +*/ + import java.util.ArrayList; import java.util.function.Consumer; diff --git a/Teilnehmer3/src/Teilnehmer3.java b/Teilnehmer3/src/Teilnehmer3.java index 10c312c..4f638c4 100644 --- a/Teilnehmer3/src/Teilnehmer3.java +++ b/Teilnehmer3/src/Teilnehmer3.java @@ -1,5 +1,9 @@ +/**Copyright (c) Balzert, H: "Java: Objektorientiert Programmieren" + * W3L-Verlag Dortmund, 3. Auflage, 2014 + * Lambda-Ausdrücke in Datenströmen, S. 327 +*/ + import java.util.ArrayList; -import java.util.function.Consumer; public class Teilnehmer3 { public static void main(String[] args) { diff --git a/Teilnehmer4/src/Teilnehmer4.java b/Teilnehmer4/src/Teilnehmer4.java index e97dfba..5e9d9a6 100644 --- a/Teilnehmer4/src/Teilnehmer4.java +++ b/Teilnehmer4/src/Teilnehmer4.java @@ -1,5 +1,10 @@ +/**Copyright (c) Balzert, H: "Java: Objektorientiert Programmieren" + * W3L-Verlag Dortmund, 3. Auflage, 2014 + * Lambda-Ausdrücke in Datenströmen + * Terminal Operations, S. 329 f. +*/ + import java.util.ArrayList; -import java.util.function.Consumer; import java.util.Optional; import java.util.OptionalDouble;