[JAVA] Wie man Identität benutzt

"Mir ist klar geworden, dass Functional Interface und andere Dinge nützlich sind, aber wofür wird diese" Identität "verwendet? Was um alles in der Welt möchten Sie eine Funktion zurückgeben, die gerade zurückkehrt?" Mir wurde gesagt, es ist also ein sehr neues Memo.

//Wenn es eine solche Klasse gibt
@Data
class Obj {
    private int id;
    private String data;
}

//Angenommen, es ist eine Liste
List<Obj> list = <some>;

// key:id, value:Generieren Sie eine Karte von obj(* Ich habe das Gefühl, dass es eine bessere Hand gibt)
Map<Integer, Obj> map = list.stream().collect(Collectors.toMap(obj::getId, Function.identity()));

Die funktionale Schnittstelle ist eine Schnittstelle zum Empfangen "der Operation selbst". Es behandelt alle Arten von Operationen wie diese mit Signaturen. Wenn ich jedoch Dinge mit diesem Knall schreibe, ist es nicht ungewöhnlich, dass ich sage: "Nein, du kannst es einfach so lassen, wie es ist! Tu nichts!" Identität ist in solchen Fällen nützlich.

Natürlich kann das Gleiche durch Schreiben von o-> o in Lambda erreicht werden, aber es ist nicht genau dasselbe. Es ist berüchtigt, dass Lambdas tatsächlich anonyme lokale Klassen sind. Je mehr Sie sie verwenden, desto mehr Klassen und Instanzen verwenden Sie. Das bedeutet ein wenig Last. (Richtig, wenn Sie es als Argument übergeben können, bedeutet dies, dass es eine Entität als Objekt hat.)

Andererseits gibt die Identität (abhängig von der JVM-Implementierung) immer dieselbe Instanz zurück: https://stackoverflow.com/questions/28032827/java-8-lambdas-function-identity-or-t-t Sicher, wenn es sicher in einer Einstellung endet, ist es in Ordnung, es leicht mit Lambda zu schreiben. Grundsätzlich hat die Verwendung von Function.identity oder UnaryOperator.identity jedoch den Vorteil, dass Sie sicher sein können, dass Sie nicht versehentlich unbrauchbare Instanzen in Massenproduktion herstellen. Verzeihen wir etwas mehr Typen und Importe.

"Übrigens, was ist Identität?"

Identität = Gleichheit. Die Methodenidentität gibt eine gleiche Funktion zurück. Eine Gleichheitsfunktion ist eine "Funktion, die das übergebene Argument zurückgibt" und das Einheitselement in der Funktionskombination. Mit anderen Worten, es ist wie die Nummer 1 (obwohl es vom Bereich des Kontexts abhängt, aber sinnlich).

Recommended Posts

Wie man Identität benutzt
Verwendung von Map
Verwendung mit_option
Verwendung von fields_for
Verwendung von java.util.logging
Verwendung der Karte
Verwendung von collection_select
Wie benutzt man Twitter4J
Wie benutzt man active_hash! !!
Verwendung von MapStruct
Verwendung von TreeSet
[Verwendung des Etiketts]
Wie man Hash benutzt
Verwendung von Dozer.mapper
Wie benutzt man Gradle?
Verwendung von org.immutables
Verwendung von java.util.stream.Collector
Verwendung von VisualVM
Verwendung von Map
Verwendung der Ketten-API
[Java] Verwendung von Map
Verwendung der Warteschlange mit Priorität
[Rails] Verwendung von Enum
Verwendung von Java Optional
Verwendung von JUnit (Anfänger)
Verwendung von Ruby return
[Rails] Verwendung von Enum
Verwendung von @Builder (Lombok)
Verwendung der Java-Klasse
Wie man Big Decimal benutzt
Verwendung von String [] args
Verwendung von Rails Join
Verwendung von Java Map
Ruby: Wie man Cookies benutzt
Verwendung von abhängigen :: zerstören
Verwendung von Eclipse Debug_Shell
Verwendung von Apache POI
[Rails] Verwendung der Validierung
Verwendung von Java-Variablen
[Rails] So verwenden Sie authenticate_user!
Verwendung von GC Viewer
Wie man Lombok jetzt benutzt
[Erstellen] Verwendung von JUnit
[Schienen] Verwendung von Scope
Verwendung der link_to-Methode
Verwendung des Arrays (persönliches Memorandum)
Verwendung des Bereichs (JSP & Servlet)
Verwendung der include? -Methode
[Schienen] Verwendung von Geräten (Hinweis)
Verwendung der Methode form_with
Verwendung von EventBus3 und ThreadMode
Hinweise zur Verwendung von Spring Data JDBC
Verwendung von binding.pry [noch 53 Tage]
Verwendung von HttpClient (Post) von Java
[Java] Verwendung der Join-Methode