TabliceCzęść NR.4Tablica jest strukturą danych używana do sortowania kolekcji wartości. Występuje ona oczywiście  C# i w Javie. Działają one tak samo. Dlatego powstał ten wpis.

Jest ona dosyć prymitywna. Ja osobiście nie pamiętam kiedy ostatnio użyłem tablicy. Każdy jednak kto studiował programowanie na uczelni to zapewne zaczynał swoją przygodę z tą kolekcją.

Deklaracja tablicy

Aby zadeklarować tablice trzeba użyć nawiasów kwadratowych,a przed nimi określić typ jaki będzie przechowywany w tablicy. Później definiujemy nazwę tablicy.

int[] h0;

Tablica może zostać zadeklarowany z każdym typem danych. Wszystkie elementy danej tablicy mogę przetrzymywać tylko elementy tego typu.

Alokacja tablicy

Sama deklaracja tablicy jeszcze nic nie robi. Musimy określić liczbę elementów do przechowywania w tablicy. Używamy w tym celu słowa kluczowego “new” później w nawiasach kwadratowych podaje wielkość tablicy.

Gdy tablica został już utworzona . Elementom zostanie przypisana domyślna wartość. Dla liczby całkowitej będzie to 0.

int[] h = new int[3];

Przypisanie wartości do tablicy

Gdy tablica została utworzona możemy referować się do poszczególnych jej elementów. Robimy to poprzez umieszczenie numeru elementu w nawiasach kwadratowych.

Numeracja tablicy zaczyna się od liczby zero. Pierwszy element w tablicy ma indeks zero.

int[] h = new int[3];
h[0] = 1;
h[1] = 2;
h[2] = 3;

Alternatywnie można przypisać wartości już przy tworzeniu tablicy używając nawiasów klamrowych. Słowo kluczowe new z definicją tablicy jest opcjonalne.

int[] h2 = new int[] {1,2,3};
int[] h3 = {1,2,3};

Kompilator wie o co nam chodzi. Ten mechanizm działa i w Javie i w C#.

Dostęp do elementów tablicy

Podobnie jak z przypisaniem:

int[] h = new int[3];
h[1] = 2;
h[2] = 3;

System.out.println(h[1] + h[2]);

Tablice wielowymiarowe : Kwadratowe  : Rectangular Arrays

Istnieją dwa typy tablic wielowymiarowych. Jedne mają układ kwadratowy, drugi mają układ poszarpany.

Ich angielskie nazwy są bardziej przyjazne. Zastanawiam się właśnie jak przetłumaczyć Jagged Arrays. Wszyscy mówią na nie tablica tablicy. Na jednych z warsztatów, które prowadziłem dostałem pytanie na ich temat i osobiście nigdy nich nie używałem. Tablica tablic czy coś takie istnieje? Oczywiście, że tak, ale o tym punkt niżej.

Tablica wielowymiarowa kwadratowa istnieje tylko w C#.

Tablica wielowymiarowa kwadratowa zazwyczaj ma tylko dwa wymiary. Może mieć jednak ich więcej.Nie ma jednak sensu opowiadać o hipersześcianach. Powiedzmy, że chce utworzyć tablicę 9 na 7 elementów.

Tablica dwu wymiarowa 7 na 9

Oto jak wygląda składnia takiej tablicy wielowymiarowej.

string[,] x = new string[9, 7];

Aby uzyskać dostęp do elementów tej tablicy używamy podobniej składni co wcześniej.

x[0, 0] = "00"; x[0, 1] = "01";
x[1, 0] = "10"; x[1, 1] = "11";
string[,] y = { { "00", "01" }, { "10", "11" } };

Javie nie ma takich tablic.

Tablice wielowymiarowe : Poszarpane tablica tablic:  Jagged Array

Tablica tablic ma nieregularne wymiary. Wymiary tablicy głównej i tablicy podrzędnej są  alokowane oddzielnie. Mając taki mechanizm możemy tworzyć tablice różnych rozmiarów. Istnieje ona w C# i w Javie.

String[][] a = new String[2][];
a[0] = new String[1]; a[0][0] = "00";
a[1] = new String[2]; a[1][0] = "10"; a[1][1] = "11";

Kolejny przykład:

String[][] tabX = {{"00","01"},{"10","11"}};
String[][] y = new String[2][2];
y[0][0] = "00";
y[0][1] = "01";
y[1][0] = "10";
y[1][1] = "11";
System.out.print(tabX[0][0] + tabX[1][1]); // "0011"

Jest także możliwość przypisania wielu wartości w trakcie alokacji.

String[][] tabb = { new String[] { "00" },
        new String[] { "10", "11" } };

Istnieje możliwość dodania kolejnego wymiaru. Można więc stworzyć tablice-tablic-tablic.