Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Scala Grundkurs

Mutable Listentypen

Testen Sie unsere 2019 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Verschaffen Sie sich in diesem Video einen Überblick, was in Scala unter mutablen Listentypen verstanden wird und warum sich dieser Listentyp besonders für den Einsatz bei der Behandlung von umfangreichen Listenoperationen eignet.

Transkript

Mitunter ist es nicht immer sinnvoll, die von Scala angebotenen Immutability Listentypen zu verwenden. Besonders dann nicht, wenn man mit einer großen Menge von Listen Operationen arbeiten muss, denn dadurch leidet die Effizienz. Schließlich muss bei jeder Operation, wie dem Hinzufügen eines Elementes, eine neue Liste erstellt werden. Für genau diese Anwendungsfälle bietet Scala über die Mutable Listen genau die Möglichkeiten, die man normalerweise auch in Programmiersprachen wie Java hätte. Und ich zeige Ihnen nun deren Verwendung. Zunächst einmal beginne ich also hier in meiner Methode Main mit einer Liste von Produkten. Diese befindet sich allerdings noch nicht innerhalb eines Listenelements. Dafür erzeuge ich nun einen sogenannten List Buffer. Hierfür nutze ich also nun eine Konstante und erzeuge zunächst einmal einen leeren List Buffer. vom Typ Product. Ich muss also hier keine Variable verwenden, da der List Buffer als solches veränderlich ist. Zum Beispiel kann ich nun also zu diesem Buffer ein Element hinzufügen, wie mein erstes Produkt. Der Buffer definiert hierfür diverse Methoden. Ich verwende in diesem Fall nun also die Notationen + und =, um ein Element hinzuzufügen. Nichtsdestotrotz kann man das genauso mit der Methode append tun. Ich sehe also, dass in meinem Buffer sich nun mein Produkt befindet. An der Stelle kann ich nun zu diesem Buffer also auch weitere Produkte hinzufügen, wie das Product2 oder auch andere Listen. Dies kann beispielsweise auch eine Immutable List sein. Wenn man Listen hinzufügt, sollte man allerdings darauf achten, dass die Notation hier ein doppeltes Plus verwendet. Wenn auch es so wirkt, als wären das hier Zuweisungen zur Konstante Buffer, handelt es sich hierbei lediglich um überschriebene Operatoren auf der Klasse List Buffer. Hier in meinem Buffer sollten sich also nun alle Produkte befinden. Sollte ich mich zu einem späteren Zeitpunkt dafür entscheiden wollen, hieraus eine Immutable List zu machen, um beispielsweise diese Liste zur Verwendung freizugeben, kann ich dies jederzeit tun. Dabei vergebe ich mithilfe einer Variable nun eine neue Immutable List, die basiert auf diesem Buffer mithilfe des Aufrufs buffer.toList Als nächstes kann ich nun, wie für eine solche Mutable List üblich, beispielsweise noch ein Element hinzufügen, wie das Projekt Nummer 1. In diesem Fall möchte ich nun prüfen, was ich in der Immutable List befindet als auch was sich nun in meinem Buffer befindet. Wie man sehen kann, hat sich der List Buffer durch die Änderungen der Immutable List nicht verändert. Das bedeutet in dem Moment, wenn man auf seinem Buffer hier beispielsweise den Aufruf toList macht, kann man sich sicher sein, dass von außen keine Manipulationen mehr an der ursprünglichen Liste vorgenommen werden können, sondern lediglich immer eine neue Liste erzeugt wird. Auch für Maps gibt es solche Möglichkeiten. Hier innerhalb der customer.scala habe ich nun also die Definition mehrerer Kunden. Alle diese Kunden tragen eine Kundennummer oder auch Customer ID. Ich möchte nun also eine Mutable HashMap erzeugen mithilfe derer ich also nur Elemente hinzufügen kann, ohne eine neue HashMap erzeugen zu müssen bei jedem Aufruf. Ich definiere also eine Konstante Map auf Basis des mutable.HashMap befülle das Ganze mit einem Element initial zum Beispiel customer1.customerId - customer1 Um nun ein Element hinzuzufügen, kann ich ähnlich vorgehen, wie bei einem List Buffer. Ich nehme nun also den Customer 2 mit seiner CustomerId und dem passenden Objekt und sollte ich ähnlich wie im Fall eines List Buffers zu einem späteren Zeitpunkt wünschen, daraus eine Immutable Map zu machen, ist das relativ einfach möglich, indem ich in diesem Fall den Aufruf map.toMap verwende. Ich kann nun also zu dieser Immutable Map ein Element hinzufügen. Beispielsweise also den customer3.customerId und kann danach noch einmal Elemente ausgeben. Wie man nun sehen kann, habe ich also eine Immutable Map erzeugt. Beim Erweitern dieser Map erhält sie also ein neues Element. In dem Fall den Customer Nummer 3. Die ursprüngliche Immutable Map in dem Fall bleibt unbeeindruckt und enthält weiterhin zwei Elemente. Genauso bleibt die MutableHashMap unbeeindruckt und hat auch weiterhin zwei Elemente. Scala bietet mir also nun auch veränderliche Datenstrukturen für Listentypen. Anders als bei den Immutable Listentypen, ist die append-Methode in der Lage, die aktuelle Instanz zu verändern. Der Einsatzzweck solcher Mutable Listentypen sollte primär innerhalb von geschlossenen Codeabschnitten sein. Soweit es geht, sollte außerhalb des Codes bzw. des Methodenblocks immer mit Immutable Datentypen gearbeitet werden. So besteht nicht das Risiko, dass sich unerwartet Datenstrukturen und Inhalte ändern. Die zwei Exemplare, die ich Ihnnen gezeigt habe, waren der List Buffer und die HashMap. Selbstverständlich gibt es noch weitere Mutable Listentypen innerhalb des Packages. Im Übrigen sollte man darauf achten, dass wenn man mit mehreren Freds und diesen Datenstrukturen arbeitet, dass diese aktuell nicht Fred save gestaltet sind. Die Scala Entwickler selbst empfehlen in diesem Fall die Nutzung der Concurrent Datenstrukturen, die das JDK mit sich bringt. Für alle anderen Fälle sollte man nach Möglichkeit mit den Immutable Datenstrukturen arbeiten.

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!