Array

Aus EINI
Version vom 10. Dezember 2015, 17:43 Uhr von Marius (Diskussion | Beiträge) (weitere Beispiele)

Wechseln zu: Navigation, Suche

Das Array ist eine der wichtigsten Datenstrukturen in der Informatik.


Was ist ein Array?

Ein Array (engl. für Feld) kann benutzt werden, um Daten des gleichen Typs so abzuspeichern, dass ein schneller Zugriff mittels Indexes ermöglicht wird. Ein Array ist so zu sagen ein Schrank mit Schubladen. Jede dieser Schubladen hat eine Nummer, den Index, und in jeder Schublade ist ein Inhalt.

Deklarierung eines Arrays

Typ[] Name;

Zunächst gibt man den Typ des Arrays an, zB wenn bei einem Integer-Array int[]. Danach wird das Array benannt.

Bsp. 1:

int[] arr;

arr ist ein Integerarray, in dem Ganzzahlen gespeichert werden können.


Bsp. 2:

char[] arr2;

arr2 ist ein Charackterarry, in dem Zeichen gespeichert werden können.

Initialisierung eines Arrays

Bei der Deklaration wird noch kein Speicher für das Array belegt. Dies geschieht erst mit der Initialisierung. Es gibt unterschiedliche Weisen ein Array zu initialisieren.

direkte Initialisierung

Ein Array kann direkt mit Werten gefüllt werden, um das Array zu initialisieren. Nach der Initialisierung ist ein Array fix. Es kann die Länge des Arrays nicht mehr geändert werden.

Typ[] Name = {Inhalt};

Beispiele:

int[] arr = {2, 6, 8, 9, 1}

Dieses Array ist vom Typ integer. Es beinhaltet die Zahlen 2, 6, 8, 9, 1 in dieser Reihenfolge. Dem entsprechend beträgt die Länge dieses Arrays 5.



char[] arr2 = {'d', 'e', 'a'}

Dieses Array ist vom Typ charackter. Es beinhaltet die Zeichen d, e, a in dieser Reihenfolge. Die Länge beträgt 3.



String[] arr3 = {"hello", "world", "foo", "bar"}

Dieses Array ist vom Typ String. Es beinhaltet die Zeichenketten hello, world, bar.


Initalisierung mit new

Mit dem new-Operator kann auch ein Array initialisiert werden. Wenn man den so das Array dekalriert, muss die maximale Länge des Arrays angegeben werden.

Typ[] Name = new Typ[Länge]


int[] arr = new int[10];

Dieses Interarray besitzt die Länge 10 und das Array wird mit Initialwerten gefüllt.



Verwendung eines Arrays

Speichern von Werten in einem Array

Name[Index] = Wert



arr[1] = 5;

Verwendung der Werte eines Arrays

Aufbau der Indexe des Arrays

Jedes Element eines Arrays hat einen Index. Das erste Element eines Arrays hat jedoch nicht den Index 1, sondern 0. Das zweite Element 1, statt 2, usw. . Das letzte Element eines Arrays ist dem entsprechend die Länge des Arrays - 1.


Länge eines Arrays

Die Länge eines Arrays kann durch Name des Arrays .length rausgefunden werden. Dieser Wert kann als Variable verwendet werden.

Laenge = arr.length;

Der Variable Laenge wird die Länge des Arrays arr zugewiesen.


Arraybefüllung mittels Schleife

Ein Array kann auch mit Hilfe von Schleifen gefüllt werden. Sowohl Indexes als auch Werte können auch Variablen sein. Wichtig hierbei ist, dass die Länge n ist, die Indexes aber von 0 bis n-1 geht.

for(int i = 0; i < arr.length; ++i)
{
  arr[i] = i*2;
}

Jedes Element dieses Array wird mit dem doppelten Indexwert zugewiesen.

Mehrdimensionale Arrays

Ein Array kann mehr als eine Dimensionen beinhalten. Arrays können, theoretisch, unendlich viele Dimensionen besitzen. Sie werden ähnlich deklariert, initialisiert und verwendet wie ein-dimensionale Arrays (s.o.).


2-Dimensionales Array

Ein 2-Dimensionales Array kann man sich als Matrix vorstellen. Jedes Element hat nun zwei Indexes.


Deklaration eines 2-d Arrays

Typ[][] 2arr;


Initalisierung eines 2-d Arrays

Typ[][] 2arr = { {Wert 1, Wert 2} , {Wert 1, Wert 2}}


oder

Typ[][] 2arr = [5][4];


Verwendung eines 2-d Arrays

Name[Index x][Index y] = Wert;

weitere Beispiele

Eine n x n große Matrix soll programmiert werden. Dabei soll der Wert der Elemente die Summe der verdoppelten Indexes sein.

public static int[][] rechne(int n){
int[n][n] erg;

for(int i = 0; i < n; i++){
   for(int j = 0; j < n; j++){
       erg[i][j] = 2*i+2*j;
   } 
}

return erg;
}


Auch hier soll eine n x n große Matrix programmiert werden.

pulbic static int[][] rechne2(int n){
int[n][n] erg;

for (int i = 0; i < n; i++){
    for(int j = 0; j < n; j++)
       if(i == 0 && j == 0){
          erg[0][0] = 1;
       }
       else if(i == 0){
            erg[0][j] = 2*j;
            }
            else if(j == 0){
                 erg[i][0] = 2*i;
                 }
                 else{
                      erg[i][j] = erg[i-1]+erg[j-1];
                     }
     }
}
}