Funktionsschnittstelle als Lambda zum Sortieren einer Sammlung?

8

Ich studiere Lambda-Ausdrücke und ich kämpfe darüber, wie man mit java.util.function.Function eine Sammlung sortieren kann. Könnte mir jemand helfen oder mir Tipps geben, wie ich das erreichen kann?

Ich habe ein Buch POJO und eine Klasse, die Bücher in einer Sammlung speichert. Ich versuche, einen Lambda-Ausdruck der Funktionsschnittstelle zu verwenden, um die gleiche Auflistung aber sortiert zurückzugeben. Ich könnte Collections.sort () verwenden und es so zurückgeben, aber ich dachte, dass es einen Weg gibt, es mit der Funktionsschnittstelle zu tun.

%Vor%

Buchen Sie POJO

%Vor%

Nur ein schneller Test ...

%Vor%     
Grim 01.09.2016, 02:13
quelle

4 Antworten

6

Ein Teil des Werts von Streams muss nicht alle Sortier-, Filter- und Erfassungsmethoden neu erfinden. Anstatt eine Filtermethode, eine Sortiermethode, eine Druckmethode usw. zu verwenden, hätte ich einfach eine Methode, die Collection<Book> zurückgibt. Lassen Sie den Anrufer mit dieser Sammlung tun, was er will.

%Vor%

Der Vorteil dieses Ansatzes besteht darin, dass der Benutzer die verschiedenen Operationen beliebig kombinieren kann. Sie können und sortieren und drucken, wenn sie das wollen.

    
John Kugelman 01.09.2016, 02:53
quelle
1

Hier ist eine Implementierung

%Vor%

wobei die Predicate und Comparator als Argumente für getSortedRecords wie unten angegeben werden können

%Vor%     
Saravana 01.09.2016 03:15
quelle
0

Sie können die Methode stream sortiert verwenden. Ссылка

    
Leonardo Andrade 01.09.2016 02:22
quelle
0

Ich wollte eine Lösung mit der Funktionsschnittstelle, aber John Kugelmans Antwort macht einen wirklich guten Punkt ... Dies ist die Lösung, die ich nach ein paar Stunden der Recherche verwendet habe.

Vergleichbar ist ein generischer Typ, also hätte ich ihn parametrisieren sollen, aber die Parametrisierung hat nicht funktioniert.

Was ich versucht habe:

%Vor%

Die Methode kannte den Typ des Feldes nicht, das aus dem Buch extrahiert werden sollte. Die Lösung bestand darin, die Methode selbst generisch zu machen:

%Vor%     
Grim 04.09.2016 01:21
quelle

Tags und Links