Slovar (preslikava)

Iz MaFiRaWiki

Ta članek ali del članka je v delu. Veseli bomo, če ga boste dopolnili in popravili.

Kaj pomeni to opozorilo?

Vsebina

Slovar

Slovar je podatkovna struktura, ki ji pravimo tudi preslikava. Uporabljamo jo, kadar imamo podatke, ki so urejeni po geslih ali ključih.

Primer

Preprost primer je slovensko-nemški slovar. Radi bi torej uporabili primerno podatkovno strukturo, v kateri bomo hranili slovenske besede z njihovimi nemškimi prevodi:

  • dan --> Tag
  • otrok --> Kind
  • govoriti --> sprechen.

Ena izmed možnosti je uporaba vektorjev. Imeli bi dva Vector si ter Vector ger. Prvi bi vseboval slovenske besede, drugi pa njihove nemške prevode. Prevod izbrane besede bi našli tako, da bi poiskali indeks besede v vektorju si, nato pa bi iz vektorja ger s pomočjo metode idexOf() dobili njen prevod.

Problem nastane, ker bi bil program zelo počasen za velike slovarje, saj metoda indexOf() iz razreda Vector deluje počasi.

Namesto tega bi bilo bolje uporabiti razred, ki je namenjen prav iskanju. Prav takega vsebuje paket java.util, in sicer razred [HashMap].

Program za naš primer bi torej izgledal takole:

  1.  
  2. import java.util.*;
  3. public class Prevod {
  4. public static void main(String[] args) {
  5.  
  6. HashMap<String, String> slovar = new HashMap<String, String>();
  7. slovar.put("dan", "Tag");
  8. slovar.put("otrok", "Kind");
  9. slovar.put("govoriti", "sprechen");
  10.  
  11. String kljuc = args[0];
  12. String prevod = slovar.get(kljuc);
  13.  
  14. if(prevod == null) {
  15. System.out.println("Besede "+ kljuc +" ni v slovarju.");
  16. }
  17. else {
  18. System.out.println(prevod);
  19. }
  20. }
  21. }

Najprej ustvarimo novo preslikavo in jo shranimo v spremenljivko slovar. Na začetku je prazna.
Z metodo put(Object k, Object v) dodamo v slovar gesla s prevodi, kjer je k geslo (key), v pa pripadajoča vrednost (value).
Metoda get(Object k) nam vrne vrednost, ki pripada določenemu geslu. Ker vrne splošen objekt, ga moramo pretvoriti v String.
Če gesla, ki ga iščemo, ni v slovarju, metoda vrne null.

Povzetek

Podatkovna struktura HashMap torej določa sposobnost predmetov, ki lahko preslokajo gesla oz. ključe v vrednosti, ne pa tudi nazaj. Ključi preslikave so vedno enolični: posamezen ključ se lahko preslika v največ eno vrednost.

Vir

  • Računalništvo 1, lekcija 14, 2001/2002
  • Uroš Mesojedec, Borut Fabjan: Java 2 - temelji programiranja

Glej tudi

Razred HashMap: [[1]]

Osebna orodja