© maxtkm/Shutterstock.com
Arrays in Java, genau wie in anderen Programmiersprachen, sind ein unglaublich nützliches Werkzeug für Programmierer, um große Datenmengen effizient zu verwalten und zu verarbeiten. Wenn Sie sich jemals gefragt haben, wie große Datenmengen hinter den Kulissen organisiert und verarbeitet werden, sind Arrays wahrscheinlich der Schlüssel dazu.
Wenn Sie gerade erst anfangen, ein Java-Entwickler zu werden, packen Sie Ihren Kopf ein um solche abstrakten Konzepte kann ein bisschen wie ein Kopfkratzer erscheinen. Schwitzen Sie jedoch nicht, denn sie sind zweifellos ein grundlegender Bestandteil der Programmierung in Java, und wenn Sie sie beherrschen, werden Sie insgesamt zu einem besseren Programmierer. Ganz zu schweigen davon, dass sie wirklich nicht so schwer zu verstehen sind.
Am Ende dieses Artikels haben Sie ein solides Verständnis von Arrays und sind auf dem besten Weg, Java zu beherrschen. Beginnen wir damit, zuerst das Konzept eines Arrays in der Programmierung zu verstehen.
Was genau ist ein Array?
Ein Array ist eine Sammlung von Datenelementen, die alle vom gleichen Typ sind und gespeichert sind ein zusammenhängender Speicherblock unter einem einzelnen Variablennamen. Stellen Sie es sich als einen Container vor, der mehrere Werte derselben Art enthalten kann, z. B. Ganzzahlen, Zeichenfolgen oder sogar andere Objekte.
Jedem Wert in einem Array wird ein eindeutiger Index oder Schlüssel zugewiesen, der verwendet wird, um auf den Wert zuzugreifen und ihn zu manipulieren. Der Schlüssel ermöglicht dem Programmierer den einfachen Zugriff auf einen bestimmten Wert im Array, ohne die gesamte Sammlung durchsuchen zu müssen.
In seiner grundlegendsten Form in Java speichern Arrays mehrere Werte desselben Datentyps, und auf die Elemente in einem Array wird über einen Index zugegriffen – den Schlüssel.
Der Index von das erste Element in einem Array ist immer 0, und der Index des letzten Elements ist immer die Länge des Arrays minus eins. Arrays können ein-oder mehrdimensional sein und primitive Datentypen oder Objekte enthalten.
So deklarieren/initialisieren Sie ein Array in Java
Um ein Array zu deklarieren, müssen Sie zuerst den Datentyp der Elemente angeben, die im Array gespeichert werden. Um beispielsweise ein Integer-Array zu deklarieren, würden Sie die folgende Syntax verwenden:
int[] numbers;
Dies deklariert ein Integer-Array namens „numbers“. Um das Array jedoch zu initialisieren oder zu instanziieren, müssen Sie den Typ und die Anzahl der Elemente angeben, die es enthalten soll:
numbers=new int[5];
Dies initialisiert die „Zahlen“ Array für fünf Integer-Werte. Sie können ein Array auch mit Werten initialisieren, indem Sie die folgende Syntax verwenden, wenn die Elemente bekannt sind:
int[] numbers={1, 2, 3, 4, 5};
This initialisiert das Array „numbers“ mit den Werten 1, 2, 3, 4 und 5. Sie können ein Array auch mit einer Schleife initialisieren:
int[] numbers=new int[5];
for (int i=0; i numbers.length; i++) {
numbers[i]=i + 1;
}
Dies initialisiert das „numbers“-Array mit den Werten 1, 2, 3, 4 und 5. Beachten Sie, dass die Zeitkomplexität dieser Initialisierungsmethode O(n) ist.
Zugriff auf und Manipulation von Array-Elementen
Arrays in Java ermöglichen es Ihnen um auf Elemente mithilfe von Indizes zuzugreifen und sie zu manipulieren. Die Indizierung beginnt bei 0, was bedeutet, dass das erste Element in einem Array einen Index von 0 hat, das zweite Element einen Index von 1 und so weiter.
Um auf ein Element in einem Array zuzugreifen, können Sie verwenden die Notation in eckigen Klammern, um den Index anzugeben. Wenn Sie beispielsweise ein Array aus ganzen Zahlen mit dem Namen „numbers“ haben und auf das dritte Element im Array zugreifen möchten, würden Sie „numbers[2]“ schreiben. Das liegt daran, dass die Indizierung bei 0 beginnt, also hat das dritte Element einen Index von 2.
Sie können Array-Elemente auch mit Indizes manipulieren. Angenommen, Sie möchten den Wert eines Elements ändern, indem Sie ihm in der Notation mit eckigen Klammern einen neuen Wert zuweisen. Verwenden Sie unser vorheriges Beispiel:
numbers[2]=10;
System.out.println(numbers[2]);//Ausgabe: 10
Als erstes weisen wir dem dritten Element des Arrays den Wert 10 zu, indem wir die Schreibweise der eckigen Klammer verwenden. Dann geben wir den Wert des dritten Elements aus, um zu bestätigen, dass es auf 10 geändert wurde.
Eine weitere verbreitete Technik zur Manipulation von Arrays ist das Sortieren. Sie können Arrays in Java mit der Methode „Arrays.sort()“ sortieren. Hier ist ein Beispiel:
int[] numbers={5, 1, 3, 2, 4};
Arrays.sort(numbers);
System.out.println (Arrays.toString (Zahlen));//Ausgabe: [1, 2, 3, 4, 5]
Hier haben wir ein Array von Ganzzahlen namens „numbers“ mit unsortierten Werten. Wir verwenden die Methode „Arrays.sort()“, um die Elemente in aufsteigender Reihenfolge zu sortieren. Dann drucken wir das sortierte Array mit der „Arrays.toString()“-Methode aus.
Mehrdimensionale Arrays
Bisher haben wir eindimensionale Arrays besprochen, die sind Arrays, die nur eine Zeile mit Elementen haben. Java unterstützt jedoch auch mehrdimensionale Arrays, d. h. Arrays mit mehreren Zeilen und Spalten von Elementen. Mehrdimensionale Arrays sind nützlich zum Speichern und Bearbeiten von Daten in einem tabellarischen Format.
Um ein mehrdimensionales Array in Java zu deklarieren, müssen Sie die Anzahl der Zeilen und Spalten angeben, die es haben soll, sowie die Datentyp der Elemente, die es enthalten wird. Um beispielsweise ein zweidimensionales Array von Ganzzahlen mit zwei Zeilen und drei Spalten zu deklarieren, würden Sie die folgende Syntax verwenden:
int[][] matrix=new int[2][3];
Dies initialisiert ein zweidimensionales Array namens „Matrix“ mit zwei Zeilen und drei Spalten, die jeweils ganzzahlige Werte enthalten. Sie können auch ein mehrdimensionales Array mit Werten initialisieren, indem Sie verschachtelte geschweifte Klammern verwenden. Betrachten Sie Folgendes:
int[][] matrix={{1, 2, 3}, {4, 5, 6}};
Dies initialisiert ein zweidimensionales Array Eine so genannte „Matrix“ mit zwei Zeilen und drei Spalten, die jeweils ganzzahlige Werte enthalten. Die erste Zeile enthält die Werte 1, 2 und 3, während die zweite Zeile die Werte 4, 5 und 6 enthält.
Um auf ein Element in einem mehrdimensionalen Array zuzugreifen, müssen Sie dessen Zeile verwenden und Spaltenindizes. Um beispielsweise auf das Element in der ersten Zeile und zweiten Spalte des „Matrix“-Arrays zuzugreifen, würden Sie „Matrix[0][1]“ schreiben. Dies liegt daran, dass der Zeilenindex 0 ist (die erste Zeile) und der Spaltenindex 1 ist (die zweite Spalte).
Arrays vs. ArrayLists in Java
Arrays und ArrayLists haben einige Gemeinsamkeiten , aber sie weisen auch einige signifikante Unterschiede auf, die sich darauf auswirken können, wann und wie Sie sie verwenden. Lassen Sie uns in den Vergleich zwischen den beiden eintauchen.
Einfach ausgedrückt ist eine ArrayList ein in der Größe veränderbares Array, das seine Größe während der Laufzeit dynamisch ändern kann. Dies ist anders als bei herkömmlichen Arrays, die eine feste Länge haben, die nach ihrer Erstellung nicht mehr geändert werden kann.
Sehen wir uns nun an, wie wir eine ArrayList initialisieren können:
ArrayList-Zahlen=new ArrayList>();
Dies initialisiert eine leere ArrayList. Wir können der ArrayList Elemente hinzufügen, indem wir die Methode add() verwenden:
numbers.add(1);
numbers.add(2);
numbers.add(3);
Wir können auch Elemente aus der ArrayList entfernen, indem wir die Methode remove() verwenden:
numbers.remove(2);
In diesem Beispiel entfernen wir das Element bei Index 2, das ist die Zahl 3. Nach dieser Operation enthält die ArrayList die Elemente 1 und 2.
Einer der bedeutendsten Vorteile der Verwendung von ArrayLists ist ihre Flexibilität. Da sie nach Bedarf wachsen und schrumpfen können, können sie eine effizientere Wahl beim Umgang mit großen Datenmengen sein. Im Gegensatz dazu können Arrays einschränkender sein, da Sie die Größe des Arrays im Voraus deklarieren müssen.
Ein weiterer wichtiger Unterschied zwischen Arrays und ArrayLists besteht darin, wie sie in Java implementiert werden. Arrays sind ein grundlegender Datentyp, was bedeutet, dass sie in die Sprache selbst eingebaut sind. ArrayLists hingegen sind Teil der Java Sammlungen Framework, das eine große Auswahl an leistungsstarken Datenstrukturen und Algorithmen zur Verwaltung von Sammlungen von Objekten bereitstellt.
Arrays vs Datenstruktur hat ihre eigenen Vor-und Nachteile. Nachfolgend finden Sie einige der Hauptüberlegungen bei der Entscheidung, ob ein Array oder eine ArrayList verwendet werden soll.
Vorteile der Verwendung von Arrays
Schnell und effizient für kleine Datenmengen. Speichereffizient, da sie keinen Overhead erfordern eines ArrayList-Objekts Sicherheit bei der Kompilierung, da Typ und Größe des Arrays im Voraus angegeben werden können
Nachteile der Verwendung von Arrays
Feste Größe, was bedeutet, dass Sie möglicherweise mehr Speicher als nötig zuweisen oder Speicher neu zuweisen müssen, falls dies erforderlich ist die Größe der Array-Änderungen kann beim Umgang mit größeren Datenmengen schwierig sein. Die Größe kann nicht geändert werden, was bedeutet, dass Sie ein neues Array erstellen und die Elemente kopieren müssen, wenn Sie die Größe ändern müssen
Vorteile der Verwendung von Arraylisten
Dynamische Größe, die es ihnen ermöglicht, je nach Bedarf zu wachsen oder zu schrumpfen Effizient für die Verwaltung großer Datenmengen Kann mithilfe integrierter Methoden einfach sortiert oder durchsucht werden
Nachteile der Verwendung von Arraylisten
Benötigen mehr Speicher als herkömmliche Arrays , da sie zusätzliche Informationen zur Größenanpassung speichern müssenLaufzeitsicherheit, da der Typ der in einer ArrayList gespeicherten Objekte nur zur Laufzeit überprüft werden kann Weniger effizient als Arrays für kleine Datenmengen
Also, wenn Sie es mit einer kleinen Menge zu tun haben von Daten und Leistung kritisch ist, sind Arrays möglicherweise die bessere Wahl. Wenn Sie jedoch große Datenmengen verwalten müssen oder eine dynamische Größenänderung benötigen, ist eine ArrayList möglicherweise die bessere Option.
„Assoziative Arrays“ in Java – Maps
Java tut es unterstützt keine assoziativen Arrays, implementiert aber etwas Ähnliches durch die Map-Datenstruktur. Eine Zuordnung ist wie ein assoziatives Array eine Sammlung von Schlüssel-Wert-Paaren, wobei jeder Schlüssel einem entsprechenden Wert zugeordnet ist.
Maps sind nützlich, wenn Sie Werte basierend auf einem bestimmten Schlüssel nachschlagen müssen, und können mit mehreren verschiedenen Klassen in Java implementiert werden. Schauen wir uns an, wie wir eine Karte mit der HashMap-Klasse initialisieren können:
HashMap phoneBook=new HashMap>();
Dies initialisiert eine leere HashMap mit Schlüsseln vom Typ String und Werte vom Typ Integer. Wir können der Karte Elemente hinzufügen, indem wir die Methode put() verwenden:
phoneBook.put(“John”, 1234567890);
phoneBook.put(“Jane”, 2345678901);
Hier sind „John“ und „Jane“ die Schlüssel und 1234567890 und 2345678901 die entsprechenden Werte. Wir können auch auf einen Wert in der Karte zugreifen, indem wir seinen Schlüssel verwenden:
int johnsPhoneNumber=phoneBook.get(“John”);
Hier wird johnsPhoneNumber der Wert 1234567890 zugewiesen.
Vorteile der Verwendung von Maps
Ein Vorteil der Verwendung einer Map gegenüber einem Array oder einer ArrayList besteht darin, dass die Schlüssel keine Ganzzahlen sein müssen. Das bedeutet, dass Sie jedes Objekt als Schlüssel verwenden können, solange es die Methoden equals () und hashCode () richtig implementiert. Dadurch können Sie benutzerdefinierte Schlüssel-Wert-Paare für komplexere Datenstrukturen erstellen.
Maps ermöglichen auch schnelle Suchen auf der Grundlage von Schlüsseln. Da die Schlüssel in der Zuordnung eindeutig sind, können Sie schnell einen Wert abrufen, der einem bestimmten Schlüssel zugeordnet ist, ohne die gesamte Datenstruktur durchlaufen zu müssen. Dies hilft besonders bei der Arbeit mit großen Datensätzen, bei denen ein schneller Zugriff auf bestimmte Werte wichtig ist.
Ein weiterer Vorteil von Karten besteht darin, dass sie verwendet werden können, um den Code in bestimmten Szenarien zu vereinfachen. Nehmen wir zum Beispiel an, wir haben einen Algorithmus, der die Häufigkeit von Wörtern in einer Textdatei zählt:
Map wordCounts=new HashMap>();
//read in text file
for ( String word: textFile) {
if (wordCounts.containsKey(word)) {
int count=wordCounts.get(word);
wordCounts.put(word, count + 1);
} sonst {
wordCounts.put(word, 1);
}
}
Hier verwenden wir ein assoziatives Array, um die Häufigkeit jedes Wortes im Text zu verfolgen Datei. Wenn sich das Wort bereits im assoziativen Array befindet, rufen wir seine aktuelle Zählung mit der Methode get() ab, erhöhen die Zählung und fügen die aktualisierte Zählung dann wieder in das assoziative Array ein. Wenn sich das Wort noch nicht im assoziativen Array befindet, fügen wir es mit einer Zählung von 1 hinzu.
Kurz gesagt, Maps vereinfachen den Code und ermöglichen ein effizientes Nachschlagen von Werten basierend auf ihren entsprechenden Schlüsseln. Wenn Sie bei der Arbeit mit großen Datensätzen häufig Werte basierend auf Schlüsseln nachschlagen müssen, würde Ihnen eine Karte eine Menge Laufarbeit ersparen.
Das Fazit
Arrays sind eine wichtige Datenstruktur in Java, und ihre Beherrschung würde einen großen Beitrag zur Verwirklichung ihrer wahren Leistungsfähigkeit in Java leisten. Sie sind vielseitig und ermöglichen es Ihnen, eindimensionale und mehrdimensionale Arrays zu erstellen, die primitive Datentypen oder Objekte enthalten können.
Mit Arrays können Sie über Indizes auf Elemente zugreifen und sie einfach durch Operationen wie Sortieren manipulieren. Wenn Sie also Java lernen und Ihre Programmierkünste auf die nächste Stufe bringen möchten, sind Arrays ein sicherer Weg, um Sie dorthin zu bringen.
Arrays in Java mit Beispielen erklärt FAQs (häufig gestellte Fragen)
Wie finden Sie die Länge eines Arrays in Java?
Um die Länge eines Arrays in Java zu ermitteln, können Sie die Eigenschaft length verwenden. Wenn Sie beispielsweise ein Array mit dem Namen „myArray“ haben, können Sie seine Länge mit der folgenden Syntax ermitteln: „int length=myArray.length;“. Dadurch erhalten Sie die Anzahl der Elemente im Array.
Können Sie ein Array mit sowohl primitiven Datentypen als auch Objekten in Java haben?
Ja, Sie können ein Array sowohl mit primitiven Datentypen als auch mit Objekten in Java haben. Dies wird als gemischtes Array bezeichnet.
Zum Beispiel können Sie ein Array erstellen, das sowohl Ganzzahlen als auch Zeichenfolgen enthält, indem Sie es als „Object[] mixedArray={1, 2, „hello“};“ deklarieren.
Allerdings wird generell davon abgeraten, gemischte Arrays zu verwenden, da sie schwierig zu handhaben sind und zu Tippfehlern führen können.
Wie konvertiert man ein Array in eine Liste in Java?
Um ein Array in Java in eine Liste umzuwandeln, können Sie die Methode Arrays.asList() verwenden. Wenn Sie beispielsweise ein Array namens „myArray“ haben, können Sie es mit der folgenden Syntax in eine Liste umwandeln: „List
Was ist der Unterschied zwischen einem Array und einer ArrayList in Java?
Der Hauptunterschied zwischen einem Array und einer ArrayList in Java besteht darin, dass ein Array eine feste Länge hat, die nach der Initialisierung nicht mehr geändert werden kann, während eine ArrayList in der Größe veränderbar ist und ihre Größe dynamisch ändern kann während der Laufzeit. Außerdem kann ein Array nur Elemente eines einzigen Datentyps enthalten, während eine ArrayList Elemente eines beliebigen Datentyps enthalten kann.
Können Sie die Größe eines Arrays ändern, nachdem es initialisiert wurde?
Nein, Sie können die Größe eines Arrays nicht ändern, nachdem es initialisiert wurde. Arrays haben eine feste Länge, die bei ihrer Erstellung bestimmt wird.
Wenn Sie Elemente zu einem Array hinzufügen oder daraus entfernen müssen, müssen Sie ein neues Array mit der gewünschten Größe erstellen und die Elemente aus dem kopieren altes Array in das neue Array.
Alternativ können Sie eine ArrayList verwenden, die in der Größe veränderbar ist und ihre Größe während der Laufzeit dynamisch ändern kann.