© Excellent backgrounds/Shutterstock.com
Java Magazin
Goldman Sachs Collections und Java Collection Framework im Vergleich

GSC vs. JDK

In den letzten Jahren kamen immer mehr Alternativen zum Java Collection Framework (JCF) als Open-Source-Projekte auf den Markt, darunter Google Guava, Commons Collections, Apache Mahout, fastutil, Trove - und die Goldman Sachs Collections. Letztere, oft GSC abgekürzt, werden seit mehreren Jahren stetig verbessert. Sie sind unter der Apache-2.0-Lizenz frei verfügbar. Doch was sind die Vorteile des Einsatzes dieser JCF-Erweiterung gegenüber JCF? Lohnen sich die Mühen des Erlernens? Oder birgt der Einsatz dieser Bibliothek sogar Nachteile?

Nataliya Wierts


Es ist wohl ein seltener Fall im Bankensektor, dass selbst entwickelte Software der Open-Source-Community zur Verfügung gestellt wird. Der Quellcode der GSC ist auf GitHub verfügbar, genauso wie die gut strukturierten Tutorials (Kata). Dieser Artikel geht auf die folgenden Punkte ein:

GSC und Java 7Java 8 Streams und GSCJMH-Benchmark-Tests von GSAggregation-Tests

Die Goldman-Sachs-Bibliothek basiert auf den Predi­cates, Functions und Procedures. Predicates werden dazu benutzt, um die Elemente aus der Collection auszuwählen, die bestimmten Kriterien entsprechen (Filtering), und Functions können benutzt werden, um zum Beispiel die Teile eines jeden Objekts in einer neuen Collection zusammenzufassen (Transformieren), sodass zum Beispiel aus dem Person-Objekt, das das Adresse-Objekt als Bestandteil hat, alle Adressen in einer neuen Collection zusammengefasst werden können. Die Procedures sind void und geben keinen Wert zurück. Goldman Sachs Collections liefern die besten Ergebnisse beim Einsatz von Java 8.

GSC und Java 7

Die selbst geschriebenen Predicates und Functions erinnern möglicherweise an das Comparable-Interface, das wir nutzen können, um eine Collection zu sortieren. Allerdings ist Comparable natürlich viel komplizierter und enthält eventuell viele Vergleiche, wogegen die Predi­cates/Functions sehr einfach sein können, aber trotzdem als eine Klasse implementiert werden müssen. Sehen wir uns ein Beispiel einer Funktion an, das alle Namen von Kunden zu einer Liste zusammenfassen kann (Listing 1).

Listing 1Function nameFunction = new Function(){ @Override public String valueOf(Customer customer) { return customer.getName(); }};MutableList customerNames = customers.collect(nameFunction);

Da wir in Java 7 keine Codeblöcke einer Funktion übergeben können (mit Java 8 geht das dank Lambda-Expressions viel einfacher), bleibt uns nichts anderes übrig, als in solch einem Fall eine eigenständige Klasse zu schreiben. Wenn wir diesen Business Case mit dem Code ohne Einsatz von GSC vergleichen wollen, dann würde das ungefähr so aussehen:

List customerNamesList = new ArrayList();for(Customer customer : customers){ customerNamesList.add(customer.getName());}

An diesem Beispiel ist deutlich zu sehen, dass man mit GSC deutlich mehr Codezeilen benötigt als ohne GSC. In beiden Fällen bekommen wir eine Liste, die Kundennamen enthält und die geändert werden kann (MutableList).

Um den Code durch Predicates und Functi...

Java Magazin
Goldman Sachs Collections und Java Collection Framework im Vergleich

GSC vs. JDK

In den letzten Jahren kamen immer mehr Alternativen zum Java Collection Framework (JCF) als Open-Source-Projekte auf den Markt, darunter Google Guava, Commons Collections, Apache Mahout, fastutil, Trove - und die Goldman Sachs Collections. Letztere, oft GSC abgekürzt, werden seit mehreren Jahren stetig verbessert. Sie sind unter der Apache-2.0-Lizenz frei verfügbar. Doch was sind die Vorteile des Einsatzes dieser JCF-Erweiterung gegenüber JCF? Lohnen sich die Mühen des Erlernens? Oder birgt der Einsatz dieser Bibliothek sogar Nachteile?

Nataliya Wierts


Es ist wohl ein seltener Fall im Bankensektor, dass selbst entwickelte Software der Open-Source-Community zur Verfügung gestellt wird. Der Quellcode der GSC ist auf GitHub verfügbar, genauso wie die gut strukturierten Tutorials (Kata). Dieser Artikel geht auf die folgenden Punkte ein:

GSC und Java 7Java 8 Streams und GSCJMH-Benchmark-Tests von GSAggregation-Tests

Die Goldman-Sachs-Bibliothek basiert auf den Predi­cates, Functions und Procedures. Predicates werden dazu benutzt, um die Elemente aus der Collection auszuwählen, die bestimmten Kriterien entsprechen (Filtering), und Functions können benutzt werden, um zum Beispiel die Teile eines jeden Objekts in einer neuen Collection zusammenzufassen (Transformieren), sodass zum Beispiel aus dem Person-Objekt, das das Adresse-Objekt als Bestandteil hat, alle Adressen in einer neuen Collection zusammengefasst werden können. Die Procedures sind void und geben keinen Wert zurück. Goldman Sachs Collections liefern die besten Ergebnisse beim Einsatz von Java 8.

GSC und Java 7

Die selbst geschriebenen Predicates und Functions erinnern möglicherweise an das Comparable-Interface, das wir nutzen können, um eine Collection zu sortieren. Allerdings ist Comparable natürlich viel komplizierter und enthält eventuell viele Vergleiche, wogegen die Predi­cates/Functions sehr einfach sein können, aber trotzdem als eine Klasse implementiert werden müssen. Sehen wir uns ein Beispiel einer Funktion an, das alle Namen von Kunden zu einer Liste zusammenfassen kann (Listing 1).

Listing 1Function nameFunction = new Function(){ @Override public String valueOf(Customer customer) { return customer.getName(); }};MutableList customerNames = customers.collect(nameFunction);

Da wir in Java 7 keine Codeblöcke einer Funktion übergeben können (mit Java 8 geht das dank Lambda-Expressions viel einfacher), bleibt uns nichts anderes übrig, als in solch einem Fall eine eigenständige Klasse zu schreiben. Wenn wir diesen Business Case mit dem Code ohne Einsatz von GSC vergleichen wollen, dann würde das ungefähr so aussehen:

List customerNamesList = new ArrayList();for(Customer customer : customers){ customerNamesList.add(customer.getName());}

An diesem Beispiel ist deutlich zu sehen, dass man mit GSC deutlich mehr Codezeilen benötigt als ohne GSC. In beiden Fällen bekommen wir eine Liste, die Kundennamen enthält und die geändert werden kann (MutableList).

Um den Code durch Predicates und Functi...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang