forked from Labore/PR2-L
added copyrights, extended Freund-Demo
parent
09a42c58b1
commit
e5e1d8c124
|
|
@ -4,6 +4,20 @@
|
||||||
// Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387
|
// Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"configurations": [
|
"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",
|
"type": "java",
|
||||||
"name": "TaschenrechnerInt2",
|
"name": "TaschenrechnerInt2",
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
|
/**Copyright (c) Balzert, H: "Java: Objektorientiert Programmieren"
|
||||||
|
* W3L-Verlag Dortmund, 3. Auflage, 2014
|
||||||
|
* Closure, S. 340
|
||||||
|
*/
|
||||||
|
|
||||||
public class Closure {
|
public class Closure {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
/**Copyright (c) Balzert, H: "Java: Objektorientiert Programmieren"
|
||||||
|
* W3L-Verlag Dortmund, 3. Auflage, 2014
|
||||||
|
* Einfache Klassenschablonen, S. 289
|
||||||
|
*/
|
||||||
|
|
||||||
public class DatenspeicherMinMax<T> {
|
public class DatenspeicherMinMax<T> {
|
||||||
private T min, max;
|
private T min, max;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 class Test {
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
DatenspeicherMinMax<Float> dF =
|
DatenspeicherMinMax<Float> dF =
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
/**Copyright (c) Balzert, H: "Java: Objektorientiert Programmieren"
|
||||||
|
* W3L-Verlag Dortmund, 3. Auflage, 2014
|
||||||
|
* Einfache Klassenschablonen, S. 293
|
||||||
|
*/
|
||||||
|
|
||||||
public class DatenspeicherMinMax2<T extends Comparable<T>> {
|
public class DatenspeicherMinMax2<T extends Comparable<T>> {
|
||||||
private T min, max;
|
private T min, max;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 class Test {
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
DatenspeicherMinMax2<Float> dF =
|
DatenspeicherMinMax2<Float> dF =
|
||||||
|
|
|
||||||
|
|
@ -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<Freund> 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<Freund> 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<Freund> aufsteigendAlter = (freund1, freund2) -> freund1.altersUnterschied(freund2);
|
||||||
|
Comparator<Freund> absteigendAlter = aufsteigendAlter.reversed();
|
||||||
|
|
||||||
|
aufsteigendesAlter = eineListe
|
||||||
|
.stream().sorted(absteigendAlter)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
druckeFreunde("Sortierung nach absteigendem Alter:", aufsteigendesAlter);
|
||||||
|
|
||||||
|
// Version (5) - Sortierung nach aufsteigendem Nachnamen:
|
||||||
|
|
||||||
|
List<Freund> 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<Freund, String> 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<Freund, Integer> 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<Freund> freunde) {
|
||||||
|
System.out.println(titel);
|
||||||
|
freunde.forEach(System.out::println);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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 class Dreieckstausch {
|
||||||
public static <E> void tausche(E [] f)
|
public static <E> void tausche(E [] f)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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<Freund> eineListe = new ArrayList<>();
|
|
||||||
|
|
||||||
eineListe.add(new Freund(45));
|
|
||||||
eineListe.add(new Freund(35));
|
|
||||||
eineListe.add(new Freund(67));
|
|
||||||
|
|
||||||
/* Alternativen:
|
|
||||||
List<Freund> aufsteigendesAlter = eineListe
|
|
||||||
.stream()
|
|
||||||
.sorted((freund1, freund2) -> freund1.altersUnterschied(freund2))
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
List<Freund> aufsteigendesAlter = eineListe
|
|
||||||
.stream()
|
|
||||||
.sorted(Freund::altersUnterschied)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
*/
|
|
||||||
|
|
||||||
Comparator<Freund> aufsteigendAlter = (freund1, freund2) ->
|
|
||||||
freund1.altersUnterschied(freund2);
|
|
||||||
Comparator<Freund> absteigendAlter =
|
|
||||||
aufsteigendAlter.reversed();
|
|
||||||
|
|
||||||
List<Freund> aufsteigendesAlter = eineListe
|
|
||||||
.stream().sorted(absteigendAlter)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
ArrayList<Freund> t = new ArrayList<>(aufsteigendesAlter);
|
|
||||||
|
|
||||||
|
|
||||||
for(Freund f : aufsteigendesAlter)
|
|
||||||
System.out.println(f.alter);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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 class TaschenrechnerInt3 implements MathInteger {
|
||||||
public static void main(String args [])
|
public static void main(String args [])
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public class Teilnehmer {
|
public class Teilnehmer {
|
||||||
|
|
|
||||||
|
|
@ -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.ArrayList;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.ArrayList;
|
||||||
import java.util.function.Consumer;
|
|
||||||
|
|
||||||
public class Teilnehmer3 {
|
public class Teilnehmer3 {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
|
||||||
|
|
@ -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.ArrayList;
|
||||||
import java.util.function.Consumer;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.OptionalDouble;
|
import java.util.OptionalDouble;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue