Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Scala Grundkurs

Maptypen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
So gut wie jede Programmiersprache verfügt über einen sogenannten Map-Datentyp. Dieser ermöglicht es, Schlüsselbeziehungen darzustellen wie beispielsweise die Beziehung zwischen einer Kundennummer und einer Kundenadresse.

Transkript

So gut wie jede Programmiersprache hat einen sogenannten Map Datentyp. Dieser erlaubt es, Schlüsselbeziehungen darzustellen, wie beispielsweise die Beziehung zwischen einer Kundennummer und einem Kunden. Besonders aus Effizienzgründen ist es nun meistens einfacher, die Kundennummern zu durchsuchen, insofern man meine Kundennummer hat, als dass man jedes Customer Objekt als solches betrachtet und dort die Kundennummer noch mal einzeln anschauen muss. Auch Scala hat für Maps einen eigenen Datentyp geschaffen. und ich zeige Ihnen nun, was es mit diesem auf sich hat. Ich befinde mich nun innerhalb meiner Applikation. In dieser Applikation gibt es nun verschiedene Kunden. Beispielsweise Christopher Janietz mit dem Alter 25, Herbert Huber mit dem Alter 30 und Markus Müller mit dem Alter 32. Um nun ein Map-Objekt für diese Kunden erzeugen zu können, kann ich also eine Variable mit der Bezeichnung Map definieren. Um eine leere Map zu erzeugen, verwendet die Notation Map.empty Und hier sehe ich bereits, dass ich zwei Typen angeben muss. K und V, also Key und Value. Dies sind die Typen für also den Schlüssel als auch den konkreten Wert. In meinem Fall, wenn ich nun eine Map erstellen möchte, beispielsweise von Kundennummer zu Kunde, würde ich hier einen Integer verwenden als Key Typ und einen Customer als Typ für das Value. Für das Initialisieren einer leeren Map empfiehlt es sich immer, die Notation mit Map.empty zu verwenden. Als nächstes könnte ich nun ein Element hinzufügen. Meine Map ist an und für sich immutable. Das bedeutet, dass bei jedem Hinzufügen eines Elementes, eine neue Instanz dieser Map überzeugt wird. Das kann ich beispielsweise tun mit der Notation Map += um ein Element hinzuzufügen und zusätzlich die Variable Map damit neue zu setzen. in meinem Fall nun (customer1.customerId) und die Beziehung nun stelle ich dadurch dar, dass ich einen Pfeil verwende. Dieser Pfeil zeigt dann also auf das Objekt Customer1. Mit dieser Art von Notation lässt sich also eine Key-Value-Beziehung ausdrücken. Daraufhin kann ich meine Map nun einmal betrachten. Wie erwartet trägt sie also nun die Schlüsselbeziehung Kundennummer 1 zu Kunde, Customer Christopher Janietz. Es gibt noch eine andere Möglichkeit, eine solche Key-Value-Beziehung zu einer Map hinzuzufügen, Beispielsweise ist es auch möglich, statt einem Pfeil eine Tuple Notation zu verwenden. Für Customer Nummer 2 wäre das also, ((customer2.CustomerId, customer2)) Die doppelte Klammersetzung bezieht sich hier zum einen auf das Tuple und dann daraus soll ein ganzer Ausdruck werden. Deswegen benötigt man in genau diesem Fall zwei Klammern. Dank der Möglichkeiten in Scala lassen sich so auch sehr kompakt Initialisierungen von Maps ausdrücken. Zum Beispiel könnte ich eine initalMap erzeugen anhand der Syntax Map() und nun könnte ich Beziehungen einfach darstellen. Zum Beispiel customer1.customerId - customer1, customer2.customerId - customer 2, und wenn ich möchte, auch mithilfe der Tuple Notation, customer3.customerId - customer3, Weiterhin bietet mir Scala hier einige Hilfsfunktionen. Zum Beispiel könnte ich mir alle Keys extrahieren lassen. Also alle CustomerIds. Dies funktioniert über den Aufruf der Funktion Keys. Das Gleich ist auch möglich für Values. An der Stelle sollte man bedenken, dass diese Operation auch Rechenzeit kostet. Das bedeutet, dass hier einmal die gesamte Map durchforstet wird und dementsprechend dann die Keys extrahiert werden. Das gleiche gilt für die Values. Also doppelter Aufwand beim Traversieren der Liste. Der Zugriff auf eine solche Map gestaltet sich auch als etwas Besonderes innerhalb von Scala. Ich könnte mir nun also einen Customer aus dieser Map extrahieren. Dafür verwende ich also die Map und den Aufruf Get. Hier kann ich nun also einen Key angeben. Dieser muss also eine CustomerId sein in meinem Fall. Die CustomerID könnte nun beispielsweise die 1 sein. Also der Customer Christopher Janietz. Das Resultat dieses Aufrufes ist allerdings ein Option. Deswegen kann ich damit auch einige Operationen durchführen. Zum Beispiel kann ich nun also diesen Customer nehmen und mir dessen vollen Namen extrahieren. Sollte ich allerdings keinen Kunden gefunden haben unter dieser ID möchte ich den Namen John Doe stattdessen angeben. Zu guter letzt gebe ich den Namen auf die Konsole aus. Im ersten Fall funktioniert das also korrekt. Wenn ich nun beispielsweise einen anderen Wert eingebe, wie die Zahl 70, dann finde ich kein Element in dieser Map und dementsprechend bekomme ich hier den Wert John Doe. Im Gegensatz zu beispielsweise Java wurde also bei Scala daran gedacht, NullPointerExceptions explizit zu vermeiden und mithilfe des Options so darzustellen, dass der Nutzer der Map dazu gezwungen ist, sauber damit umzugehen, damit so unter Umständen auch ein Fallback bereitgestellt werden kann, wie beispielsweise in meinem Fall der Name John Doe. Maps innerhalb von Scala stellen also ganz normale Key-Value-Beziehungen dar. Anders als in Programmiersprachen wie Java ist es relativ einfach möglich, eine Map auch inline zu definieren und die Elemente nicht zusätzlich manuell später in die Map einzutragen. Alternativ zur Syntax mit dem Pfeil, können auch Tupel zur Übergabe von solchen Key-Value-Daten verwendet werden.

Scala Grundkurs

Entdecken Sie die Möglichkeiten und Eigenschaften der modernen Programmiersprache Scala.

4 Std. 44 min (39 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Exklusiv für Abo-Kunden
Erscheinungsdatum:12.04.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!