ALOITTELIJAN JAVA-OPAS


8. Taulukot

Taulukko muodostuu kokoelmasta samantyyppisiä muuttujia, joihin voidaan viitata yhteisellä nimellä. Yksiulotteiset taulukot ovat yleisimpiä, mutta Javassa taulukko voi olla myös moniulotteinen. Taulukot tarjoavat tavan ryhmitellä toisiinsa liittyviä muuttujia. Taulukko on esimerkiksi käyttökelpoinen tilastoitaessa kuukauden päivän korkeimpia lämpötiloja.

8.1 Yksiulotteinen taulukko

Seuraavassa on esitetty yksiulotteisen taulukon määrittely.

    int noppa[];
    noppa = new int[6];

Vaihtoehtoiset tavat taulukon varaamiselle, joissa esittely ja muistin varaaminen tehdään samassa lauseessa, ovat seuraavanlaiset.

    int noppa[] = new int[6];
    int[] noppa = new int[6];

Javassa taulukon tyyppinä voi olla mikä tahansa alkeistietotyyppi tai olio. Taulukon kaikki alkiot ovat samaa tyyppiä. Edellisissä esimerkeissä taulukon tyyppinä on kokonaisluku. Tyhjät hakasulut ilmoittavat kääntäjälle taulukon luonnista. Taulukkoon enimmillään tulevien alkioiden määrä on annettava taulukon luontivaiheessa. Edellisissä esimerkeissä taulukkoon mahtuu kuusi alkiota. Taulukot ovat olioita Javassa, joten ne luodaan new-operaattorilla niin kuin muutkin oliot.

Taulukko voidaan alustaa määrittelyn jälkeen. Taulukossa käytetään indeksinumeroita . Indeksointi alkaa paikasta 0, ja viimeinen paikka on taulukon koko miinus yksi. Edellä määritellyn noppa-taulukon alkiot ovat siis noppa[0]... noppa[5].

Kukin taulukon alkio voidaan alustaa erikseen.

    noppa[0] = 0;
    noppa[1] = 0;
    noppa[2] = 0;
    noppa[3] = 0;
    noppa[4] = 0;
    noppa[5] = 0;

On suositeltavaa käyttää indeksinä luvun sijasta muuttujia. Seuraavassa onkin edellistä parempi tapa alustaa kaikki kokonaislukutaulukon arvot nollaksi.

    for (int i = 0; i < 6; i++)  {
      nopppa[i] = 0;
}

Taulukon alustaminen voidaan tehdä jo esittelyn yhteydessä. Tällöin samalla määräytyy taulukon koko, jota ei voi ohjelmassa muuttaa.

    int[] noppa = {3, 4, 1, 6, 1};

Taulukon rajojen ylittäminen tai alittaminen on ajonaikainen virhe. Java generoi viestin viittauksesta varaamattomaan taulukon indeksiin, joka on poikkeus ArrayIndexOutOfBounds.

Taulukon pituus saadaan length-ominaisuuden avulla. Seuraavassa on esimerkki merkkijonotaulukosta, jossa tulostetaan kaikki alkiot käyttäen taulukon pituutta.

    String[] nimet = {"Aku", "Tupu", "Hupu", "Lupu"} //merkkijonotaulukon alustus
    // Kaikkien merkkijonotaulukon arvojen tulostus.
    for (int i=0; i < nimet.length; i++)  {
      System.out.print(nimet[i] + " ");
}

8.2 Moniulotteinen taulukko

Yksinkertaisin moniulotteisista taulukoista on kaksiulotteinen taulukko. Seuraavassa esimerkki kaksiulotteisen taulukon käytöstä.

    
    class Luvut  {
      public static void main(String args[])  {
        int luvut[ ] [ ] = {
          {1, 100},
          {3, 256},
          {5, 456},
          {6, 234},
          {7, 345},
          {9, 123}  };
        for (int i=0; i< 6; i++)  {
          for (int j=0; j <2; j++)  {
            System.out.print(luvut[i][j] + " ");
          }
          System.out.println();
        }
      }
    }
    
Esimerkkiohjelma tulostaa: 1 100 3 256 5 456 6 234 7 345 9 123

Moniulotteisen taulukon määrittelyn yleinen muoto on tyyppi nimi [][]...[] = new tyyppi[koko1][koko2]...[kokoN].

Seuraava esittely luo 3x10x4-kokoisen kolmiulotteisen taulukon.

    int kolmiulot[][][] = new int[3][10][4];


Tietojärjestelmien dokumentointi 2005 | Aloittelijan JAVA-opas


Valid CSS!