70 likes | 179 Views
Map -luokka. Mikä M ap on? Mapin esittely ja luonti Map -luokan metodeja Mappiin lisääminen Mapin läpikäynti Mapista poistaminen. Mikä Map on?. Map on hajautustauluksi kutsuttu tietorakenne, johon tiedot tallennetaan avain-arvo -pareina (Key- V alue pairs ).
E N D
Map-luokka Mikä Map on? Mapin esittely ja luonti Map-luokan metodeja Mappiin lisääminen Mapin läpikäynti Mapista poistaminen
Mikä Map on? • Map on hajautustauluksi kutsuttu tietorakenne, johon tiedot tallennetaan avain-arvo-pareina (Key-Value pairs). • Mapin avaimet ja arvot voivat olla mitä tahansa olioita. • Esimerkki avain-arvo-pareista: • tilinumero – Tili-luokan olio • tuotekoodi – Tuote-luokan olio • asiakastunnus – Asiakas-luokan olio • Taulukossa (Array) ja listassa (List) tiedot löytyvät paikkanumeron eli indeksin perusteella, mutta Mapissa tiedot löytyvät sisällön/avaimen perusteella. Esim. pankkitilin tiedot löytyvät Map-rakenteesta tilinumero-avaimen perusteella. Ja tuotteen tiedot löytyvät Map-rakenteesta tuotekoodi-avaimen perusteella.
Mapin esittely ja luonti • Ohjelmaan lisätään import java.util.Map; import java.util.HashMap; • Pankkitilit tilinumero-avaimen mukaan • Tuotteet tuotekoodi-avaimen mukaan • Asiakkaat asiakastunnus-avaimen mukaan Map<String,Tili> tilit = newHashMap<String,Tili>(); Map<Integer,Tuote> tuotteet = newHashMap<Integer,Tuote>(); Map<String,Asiakas> asiakkaat = newHashMap<String,Asiakas>(); avaimen tyyppi (luokka) mitä arvoja Mappiin laitetaan(luokka) tyhjän Mapin luominen
Map-luokan metodeja Huom! K = avaimen (Key) luokka-tietotyyppi, V = arvon (Value) luokka-tietotyyppi
Mappiin lisääminen // luo Map-rakenne, jonne talletetaan pankkitilien tietoja Map<String,Tili> tilit = newHashMap<String,Tili>(); Stringtilinro; // pankkitilin numero doublesaldo; // pankkitilin saldo System.out.print("Anna pankkitilin numero: "); tilinro = input.nextLine(); System.out.print("Anna pankkitilin saldo: "); saldo = input.nextDouble(); // input.nextLine() Tili uusiTili = new Tili(tilinro, saldo); // luo uusi Tili-olio tilit.put(tilinro, uusiTili); // jos listasta löytyy jo tili-olio // samalla tilinrolla, vanha tili-olio tuhoutuu, kun uusi // lisätään Lisätään tilit-Mappiin uusiTili-olio. Olion avaimena tilinro. 5
Mapin läpikäynti • // Mapin tilinumero-avaimet pyydetään keySet-metodilla Set:ksi • Set<String> tilinrot = tilit.keySet(); • // luo Iterator-tyyppinen i-olio, jolla voidaan läpikäydä • // kaikki Set-kokoelman tilinumerot • Iterator<String> i = tilinrot.iterator(); • StringseurTilinro = null; // seuraava Tilinro • Tili seurTili = null; // seuraava Tili-olio • while (i.hasNext()) { // jos löytyy vielä seuraava tilinro • seurTilinro = i.next(); • seurTili = tilit.get(seurTilinro); • System.out.println(seurTili); • } • // HashMap tallentaa tilit-rakenteeseen tili-oliot //satunnaisessa järjestyksessä. Tämä näkyy myös tulostuksessa. Käydään iteraattorin avulla kaikki tilinrot läpi ja tulostetaan tilien tiedot
Mapista poistaminen • Stringtilinro; // pankkitilin tilinumero • Tili poistettuTili= null; // apumuuttuja • System.out.println("Syötä poistettavan pankkitilin tilinro:"); • tilinro= input.nextLine(); • poistettuTili = tilit.remove(tilinro); • if(poistettuTili != null){ // jos poistettava tili löytyi • System.out.println("Tileistä poistettu seuraava tili:"); • System.out.println("Tilinro: "+poistettuTili.getNumero()); • System.out.println("Saldo: "+poistettuTili.getSaldo()); • } else { • System.out.println("Tiliä "+tilinro+" ei löydy tileistä."); • } poistetaan tilit-Mappista viite tili-olioon. Poistettavan tilin avain saadaan parametrina. 7