Hier ist meine (meistens) jargon- und codefreie Antwort.
Stellen Sie sich Daten auf zwei Arten vor: als Stream (Werte, die im Laufe der Zeit auftreten, z. B. Ereignisse) oder als Struktur (Daten, die zu einem bestimmten Zeitpunkt vorhanden sind, z. B. eine Liste, ein Vektor, ein Array usw.).
Es gibt bestimmte Vorgänge, die Sie möglicherweise über Streams oder Strukturen ausführen möchten. Eine solche Operation ist das Mapping. Eine Zuordnungsfunktion kann jedes Datenelement (vorausgesetzt, es ist eine Zahl) um 1 erhöhen, und Sie können sich hoffentlich vorstellen, wie dies entweder auf einen Stream oder eine Struktur angewendet werden könnte.
Eine Zuordnungsfunktion ist nur eine aus einer Klasse von Funktionen, die manchmal als "Reduktionsfunktionen" bezeichnet werden. Eine weitere häufig verwendete Reduktionsfunktion ist der Filter, mit dem Werte entfernt werden, die mit einem Prädikat übereinstimmen (z. B. alle geraden Werte entfernen).
Mit Wandlern können Sie eine Folge von einer oder mehreren reduzierenden Funktionen "umschließen" und ein "Paket" (das selbst eine Funktion ist) erstellen, das sowohl für Streams als auch für Strukturen funktioniert. Zum Beispiel könnten Sie eine Folge von Reduzierungsfunktionen "verpacken" (z. B. gerade Zahlen filtern und dann die resultierenden Zahlen zuordnen, um sie um 1 zu erhöhen) und dann dieses "Paket" des Wandlers entweder für einen Stream oder eine Wertestruktur (oder für beide) verwenden. .
Was ist das Besondere daran? In der Regel können reduzierende Funktionen nicht effizient zusammengesetzt werden, um sowohl an Streams als auch an Strukturen zu arbeiten.
Der Vorteil für Sie besteht also darin, dass Sie Ihr Wissen über diese Funktionen nutzen und auf weitere Anwendungsfälle anwenden können. Die Kosten für Sie sind, dass Sie einige zusätzliche Maschinen (dh den Wandler) erlernen müssen, um diese zusätzliche Leistung zu erhalten.