Aktionen

Arrays

Aus Java Tutorial - Java lernen

Java stellt eine Datenstruktur, das Array, zur Verfügung, das eine sequentielle Sammlung von Elementen desselben Typs in fester Größe speichert. Ein Array wird verwendet, um eine Sammlung von Daten zu speichern, aber es ist oft nützlicher, sich ein Array als eine Sammlung von Variablen desselben Typs vorzustellen.

Anstatt einzelne Variablen wie z. B. Zahl0, Zahl1, ... und Zahl99 zu deklarieren, deklarieren Sie eine Array-Variable wie z. B. Zahlen und verwenden Zahlen[0], Zahlen[1] und ..., Zahlen[99] zur Darstellung einzelner Variablen.

Dieses Lernprogramm führt in die Deklaration von Array-Variablen, die Erstellung von Arrays und die Verarbeitung von Arrays mit indizierten Variablen ein.

Deklarieren von Array-Variablen

Um ein Array in einem Programm zu verwenden, müssen Sie eine Variable deklarieren, um auf das Array zu verweisen, und Sie müssen den Typ des Arrays angeben, auf den die Variable verweisen kann. Hier ist die Syntax für die Deklaration einer Array-Variable:

Syntax

dataType[] arrayRefVar;   // empfohlener Weg
or
dataType arrayRefVar[];  // funktioniert; aber nicht empfohlen

Hinweis - Der Stil dataType[] arrayRefVar wird bevorzugt. Der Stil dataType arrayRefVar[] stammt aus der Sprache C/C++ und wurde in Java übernommen, um C/C++-Programmierern entgegenzukommen.

Beispiel

Die folgenden Code-Schnipsel sind Beispiele für diese Syntax:

double[] myList;   // empfohlener Weg
or
double myList[];   // funktioniert; aber nicht empfohlen

Erstellen von Arrays

Sie können ein Array erstellen, indem Sie den neuen Operator mit der folgenden Syntax verwenden:

Syntax

arrayRefVar = new dataType[arraySize];

Die obige Erklärung bewirkt zwei Dinge:

  • Es erstellt ein Array mit dem neuen dataType[arraySize].
  • Es weist die Referenz des neu erstellten Arrays der Variablen arrayRefVar zu.

Die Deklaration einer Array-Variablen, die Erstellung eines Arrays und die Zuweisung der Referenz des Arrays an die Variable können in einer Anweisung kombiniert werden, wie unten dargestellt:

dataType[] arrayRefVar = new dataType[arraySize];

Alternativ können Sie Arrays wie folgt erstellen:

dataType[] arrayRefVar = {value0, value1, ..., valuek};

Auf die Array-Elemente wird über den Index zugegriffen. Array-Indizes sind 0-basiert, d.h. sie beginnen bei 0 bis arrayRefVar.length-1.

Beispiel

Folgende Anweisung deklariert eine Array-Variable, myList, erstellt ein Array mit 10 Elementen vom Typ double und weist seine Referenz myList zu:

double[] myList = new double[10];

Das folgende Bild zeigt das Array myList. Hier enthält myList zehn Doppelwerte und die Indizes liegen zwischen 0 und 9.

Array.jpg

Quelle: www.tutorialspoint.com

Verarbeitung von Arrays

Bei der Verarbeitung von Arrayelementen verwenden wir oft entweder die for-Schleife oder die foreach-Schleife, da alle Elemente in einem Array vom gleichen Typ sind und die Größe des Arrays bekannt ist.

Beispiel

Hier ist ein vollständiges Beispiel, das zeigt, wie man Arrays erstellt, initialisiert und verarbeitet:

public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // Ausgabe aller Array-Elemente
      for (int i = 0; i < myList.length; i++) {
         System.out.println(myList[i] + " ");
      }
     
      // Alle Elemente zusammenfassen
      double total = 0;
      for (int i = 0; i < myList.length; i++) {
         total += myList[i];
      }
      System.out.println("Total is " + total);
      
      // Finden des größten Elements
      double max = myList[0];
      for (int i = 1; i < myList.length; i++) {
         if (myList[i] > max) max = myList[i];
      }
      System.out.println("Max is " + max);  
   }
}

Dies wird zu folgendem Ergebnis führen:

Ausgabe

1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5

Die foreach-Schleifen

JDK 1.5 führte eine neue for-Schleife ein, die als foreach-Schleife bekannt ist, oder verbesserte for-Schleife, die es Ihnen ermöglicht, das gesamte Array sequentiell zu durchlaufen, ohne eine Indexvariable zu verwenden.

Beispiel

Der folgende Code zeigt alle Elemente im Array myList:

public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // Gibt alle Array-Elemente aus
      for (double element: myList) {
         System.out.println(element);
      }
   }
}

Dies wird zu folgendem Ergebnis führen:

Ausgabe

1.9
2.9
3.4
3.5

Übergeben von Arrays an Methoden

Genauso wie Sie primitive Typwerte an Methoden übergeben können, können Sie auch Arrays an Methoden übergeben. Beispielsweise zeigt die folgende Methode die Elemente in einem int-Array an:

Beispiel

public static void printArray(int[] array) {
   for (int i = 0; i < array.length; i++) {
      System.out.print(array[i] + " ");
   }
}

Sie können es aufrufen, indem Sie ein Array übergeben. Beispielsweise ruft die folgende Anweisung die printArray-Methode auf, um 3, 1, 2, 6, 4 und 2 anzuzeigen:

Beispiel

printArray(new int[]{3, 1, 2, 6, 4, 2});

Zurückgeben eines Arrays von einer Methode

Eine Methode kann auch ein Array zurückgeben. Beispielsweise gibt die folgende Methode ein Array zurück, das die Umkehrung eines anderen Arrays ist:

Beispiel

public static int[] reverse(int[] list) {
   int[] result = new int[list.length];

   for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
      result[j] = list[i];
   }
   return result;
}

Die Array-Klassen

Die Klasse java.util.Arrays enthält verschiedene statische Methoden zum Sortieren und Durchsuchen von Arrays, zum Vergleichen von Arrays und zum Füllen von Arrayelementen. Diese Methoden sind für alle primitiven Typen überladen.

Nummer Methode Beschreibung
1 public static int binarySearch(Object[] a, Object key) Durchsucht das angegebene Array von Object ( Byte, Int , double usw.) mit Hilfe des binären Suchalgorithmus nach dem angegebenen Wert. Das Array muss vor diesem Aufruf sortiert werden. Es wird der Index des Suchschlüssels zurückgegeben, wenn er in der Liste enthalten ist; andernfalls wird ( - (Einfügemarke + 1)) zurückgegeben.
2 public static boolean equals(long[] a, long[] a2) Gibt true zurück, wenn die beiden angegebenen Arrays vom Typ Long gleich sind. Zwei Arrays gelten als gleich, wenn beide Arrays die gleiche Anzahl von Elementen enthalten und alle entsprechenden Paare von Elementen in den beiden Arrays gleich sind. Gibt true zurück, wenn die beiden Arrays gleich sind. Dieselbe Methode könnte von allen anderen primitiven Datentypen (Byte, Short, Int usw.) verwendet werden.
3 public static void fill(int[] a, int val) Weist den angegebenen Wert int jedem Element des angegebenen Arrays von ints zu. Dieselbe Methode könnte von allen anderen primitiven Datentypen (Byte, Short, Int usw.) verwendet werden.
4 public static void sort(Object[] a) Sortiert das angegebene Array von Objekten in aufsteigender Reihenfolge, entsprechend der natürlichen Anordnung seiner Elemente. Dieselbe Methode könnte von allen anderen primitiven Datentypen ( Byte, Short, Int, etc.) verwendet werden.