Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille

Samankaltaiset esitykset


Esitys aiheesta: "Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille"— Esityksen transkriptio:

1 Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille
Taulukot Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille

2 Taulukot Usein on tarvetta käsitellä ryhmää samantyyppisiä olioita tai perustietotyyppejä On raskasta ja virhealtista kirjoittaa esimerkiksi kymmeniä samantyyppisiä muuttujia peräkkäin ja suorittaa niille kaikille samaa operaatiota Apua tuovat taulukot, joissa yhteen muuttujaan pystytään sijoittamaan useita olioita

3 Yksiulotteinen taulukko
Yksiulotteinen merkkijonotaulukko esitellään ja luodaan: String[] names = new String[4]; Rivi varaa tilan neljälle String-tyyppiselle oliolle. Se jättää kuitenkin kaikki oliot null-arvoiksi. Mikäli taulukko on luotu jostakin perustietotyypistä, ovat taulukon indeksit suoraan käytössä (ei tarvitse new:llä luoda joka paikkaan oliota) Taulukon indeksointi alkaa aina nollasta.

4 Yksiulotteinen oliotaulukko
Oliotaulukon sisältö olisi luonnin jälkeen: 0 null 1 null 2 null 3 null Taulukon yksittäiseen olioon voidaan viitata []:n avulla: names[0] = new String(”Pekka”); Edellinen rivi luo taulukon ensimmäiseen paikkaan uuden merkkijono-olion

5 Yksiulotteinen taulukko
Yksiulotteisen taulukon kokoa voidaan muuttaa vain luomalla uusi taulukko. Taulukon kokoon saa length:llä: int size = names.length; Taulukon sallittuja sijoitus- ja lukupaikkoja ovat [0..length-1]. Mikäli yritetään käyttää muita paikkoja, heittää Java ajonaikaisen virheen.

6 Yksiulotteinen oliotaulukko
Käytettäessä String-luokkaa, voidaan kirjoittaa hieman lyhyemmin: names[0] = ”Pekka”; koska Java luo automaattisesti ””:lla erotetusta merkkijonosta uuden String-olion

7 Taulukon alustaminen Taulukkoon voidaan sijoittaa arvoja luonnin yhteydessä: final int[] daysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

8 Yksiulotteinen taulukko - esimerkki
String[] students = new String[3]; students[0] = new String(”Matti”); students[1] = new String(”Maija”); students[2] = new String(”Antti”); for (int i=0;i<students.length;i++) { System.out.println(students[i]); }

9 Yksiulotteinen taulukko – esimerkki 2
private String [] m_students; public void createStudents() { m_students = new String[3]; students[0] = new String(”Matti”); students[1] = new String(”Maija”); students[2] = new String(”Antti”); } public void printStudents() { for (int i=0;i<m_students.length;i++) { System.out.println(m_students[i]);

10 Taulukon käyttöongelma
Koon muuttaminen ei ole yksinkertaista Soveltuu huonommin tilanteisiin, joissa kokoa ei tunneta ennalta tai koko muuttuu usein

11 Taulukon koon muuttaminen
public class StudentArray { private String [] m_students; public StudentArray() { setArraySize(3); students[0] = new String(”Matti”); students[1] = new String(”Maija”); students[2] = new String(”Antti”); } public void setArraySize(int newSize) { String[] newArray = new String[newSize]; int minLength; if (m_students.length<newSize) minLength = m_students.length; else minLength = newSize; for (int i=0;i<newSize;i++) { newArray[i] = m_students[i];

12 Moniulotteiset taulukot
Taulukot voivat olla moniulotteisia, koska yksittäinen taulukon alkio voi sisältää toisen taulukon [1] [0] [2] [3]

13 Moniulotteiset taulukot – esimerkki
Ohjelma, joka piirtää 8x8 ruudun kokoisen shakkilaudan Vierekkäiset ruudut ovat eri värisiä Vasemman yläkulman ruutu on musta Valkoinen ympyrän muotoinen pelinappula sijoitetaan yhteen ruutuun

14 Moniulotteiset taulukot
Esimerkiksi kaksiulotteinen taulukko: String[][] stringArray = new String[2][4]; stringArray[0][0] = new String(”Ruutu (0,0)”); stringArray[0][1] = new String(”Ruutu (0,1)”); int sizeX = stringArray.length; // == 2 int sizeY = stringArray[0].length; // == 4 String oneItem = stringArray[1][2]; [1] [0] [2] [3]

15 Kokonaislukutaulukon järjestäminen lisäyslajittelu
public void insertionSort(int [] intArray) { for (int i=1;i<intArray.length;i++) { int tmp = intArray[i]; int j = i; while (j > 0 && intArray[j-1] > tmp) { intArray[j] = intArray[j-1]; j--; } intArray[j] = tmp;

16 Vector-luokka Vector-luokalla voidaan toteuttaa samat toiminnot kuin taulukolla. Lisäksi sillä on monia muita helpottavia ominaisuuksia. Kopiointi Koon muuttaminen Lisäys, poisto Vector-luokka löytyy java.util-paketista (import java.util.Vector)

17 Vector-luokka – esimerkki
import java.util.Vector; ... Vector vector = new Vector(); vector.add(”Pekka”); vector.add(”Tomppa”); vector.remove(0); String firstItem = (String)vector.get(0); vector.add(”Satu”); for (int i=0;i<vector.size();i++) { System.out.println( (String)vector.get(i) ); }


Lataa ppt "Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille"

Samankaltaiset esitykset


Iklan oleh Google