Java List Initialization in One Line (Deutsch)

0 Comments

Übersicht

In diesem schnellen Tutorial, wir untersuchen, wie eine Liste mit Einzeiler initialisieren.

Weitere Informationen:

Sammlungen.emptyList () vs. New List Instanz

Lernen Sie die Unterschiede zwischen den Sammlungen.emptyList () und eine neue Listeninstanz.,
Weiterlesen →

Anleitung zur Java ArrayList

Schnelle und praktische Anleitung zur ArrayList in Java
Weiterlesen →

Aus einem Array erstellen

Wir können eine Liste aus einem Array erstellen. Und dank Array-Literalen können wir sie in einer Zeile initialisieren:

Wir können dem varargs-Mechanismus vertrauen, um die Array-Erstellung zu handhaben. Damit können wir mehr prägnanten und lesbaren Code schreiben:

Die Ergebnisinstanz dieses Codes implementiert die Listenschnittstelle, aber es ist kein Java.util.,ArrayList oder eine LinkedList. Stattdessen ist es eine Liste durch das ursprüngliche Array gesichert, das hat zwei Auswirkungen, die wir im Rest dieses Abschnitts betrachten.

Obwohl der Name der Klasse zufällig ArrayList ist, ist es in Java.util.Arrays-Paket.

2.1. Feste Größe

Die Ergebnisinstanz aus Arrays.asList eine Feste Größe:

2.2. Shared Reference

Das ursprüngliche Array und die Liste teilen sich die gleichen Verweise auf die Objekte:

Erstellen Sie aus einem Stream (Java 8)

Wir können einen Stream problemlos in jede Art von Sammlung konvertieren.,

Daher können wir mit den Factory-Methoden für Streams Listen in einer Zeile erstellen und initialisieren:

Wir sollten hier Folgendes beachten.ToList () garantiert nicht die genaue Implementierung der zurückgegebenen Liste.

Es gibt keinen allgemeinen Vertrag über die Veränderlichkeit, Serialisierbarkeit oder Thread-Sicherheit der zurückgegebenen Instanz. Unser Code sollte sich also nicht auf eine dieser Eigenschaften verlassen.

Einige Quellen heben diesen Stream hervor.von(…).collect (…) kann einen größeren Speicher-und Leistungsbedarf als Arrays haben.asList()., Aber in fast allen Fällen ist es eine solche Mikro-Optimierung, dass es wenig Unterschied.

Factory-Methoden (Java 9)

JDK 9 führt mehrere praktische Factory-Methoden für Sammlungen ein:

Ein wichtiges Detail ist, dass die zurückgegebenen Instanzen unveränderlich sind. Darüber hinaus haben die Werksmethoden mehrere Vorteile in Bezug auf Platzeffizienz und Gewindesicherheit.

Dieses Thema wird mehr in diesem Artikel erforscht.,

Double-Brace-Initialisierung

An mehreren Stellen finden wir eine Methode namens Double-Brace-Initialisierung, die folgendermaßen aussieht:

Der Name „Double-Brace-Initialisierung“ ist ziemlich irreführend. Während die Syntax kompakt und elegant aussehen kann, verbirgt sie gefährlich, was unter der Haube vor sich geht.

In Java gibt es eigentlich kein Syntaxelement mit doppelter Klammer. Das sind zwei Blöcke, die absichtlich auf diese Weise formatiert wurden.

Mit den äußeren Klammern deklarieren wir eine anonyme innere Klasse,die eine Unterklasse der ArrayList., Wir können die Details unserer Unterklasse in diesen Klammern deklarieren.

Wie üblich können wir Instanzinitialisierungsblöcke verwenden, von denen das innere geschweifte Paar stammt.

Die Kürze dieser syntax ist verlockend. Allerdings ist es ein Anti-Muster betrachtet.

Um mehr über die Initialisierung von Doppelklammern zu erfahren, schauen Sie sich unseren Artikel hier an.

<

Modernes Java bietet mehrere Optionen zum Erstellen einer Sammlung in einer Zeile. Die Methode, die wir wählen, beruht fast ausschließlich auf persönlichen Vorlieben und nicht auf technischen Überlegungen.,

Ein wichtiges Mitnehmen ist, dass, obwohl es anmutig aussieht, das Anti-Muster der anonymen inneren Klasseninitialisierung (auch bekannt als doppelte Klammer) viele negative Nebenwirkungen hat.

Wie immer ist der Code auf GitHub verfügbar.

Beginnen Sie mit Spring 5 und Spring Boot 2 über den Learn Spring course:

>> SCHAUEN SIE SICH DEN KURS AN


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.