Järgi jääb arv vahemikus 0-1. Leitud arv korrutatakse tabeli pikkusega M, tulemusest jäetakse alles täisosa. Hea arv, millega korrutada on T = ruutjuur 5st – 1 / 2 = 0,618033. Paiskfn on järgmine h(k) = [M(k*T – [k*T])]. Kandilised sulud tähistavad seda, et täisosa jääb järgi. Kollisioon – vastuolu. Ahelad väljaspool tabelit – elemendid, millel tekib vastuolu, seotakse ahelasse. Paisktabeli lahtris indeksiga h on aadress selle ahela esimesele elemendile, kuhu paigutataxe kõik paiskväärtust h omavad kirjed. Elemente võib olla rohkem kui tabelis lahtreid. 1. Otsimine – arvuta paiskaadress; kontroll kas võti K on tabelis kohal t[h(k)]; kui lahter tühi, siis ebaedukas; kui võti selles lahtris ei ole K, siis läbi kollisiooniahel; kui K-d ei leitud, siis ebaedukas; kui võti K oli lahtris, siis edukas. 2
tabeli lahtri aadressi. • Paiskfunktsioon tuleb valida selliselt, et arvutuse tulemus mahuks tabeli indeksite vahemikku. • Paisksalvestamiseks paigutatakse andmed paisktabelisse, mida saab realiseerida massiivina. 14.3 Paiskfunktsioon • On algoritm, mis arvutab suvalisele väärtusele vasteks täisarvu nii, et see mahub etteantud vahemikku. • Vahemikuks on paisktabeli pikkus ehk leitud täisarv peab sobima tabeli indeksiks. • Leitud indeksit nimetatakse paiskväärtuseks. • Kollisioon ehk põrge on olukord, kus paiskfunktsiooni rakendamisel kahele erinevale võtmele tekib sama paiskväärtus. • Peab olema kiirelt ja kergelt arvutatav - LIHTNE • Suutma salvestada kirjed võimalikult ühtlaselt tabelisse ära jagada – ÜHETAOLINE • Sama sisend peab alati andma sama väljundi - DETERMINEERITUD 14.3.1 Jäägi meetod
got a null collection"); Iterator < ? extends T > iter = a.iterator(); if (iter.hasNext()) maxelem = iter.next(); else throw new NoSuchElementException (" maximum2 got an empty collection"); for (T c : a) { if (maxelem.compareTo (c) < 0) maxelem = c; } return maxelem; } // maximum2 Näide paisktabeli kohta: import java.util.*; /** Leida etteantud s6nade esinemissagedused tekstis. * @author Jaanus Poial * @version 0.2 */ public class Sagedused { /** peameetod silumiseks, tekst anda k2surealt */ public static void main (String[] arg) { // p66rdumine sagedustabeli moodustaja poole HashMap stabel = leiaSagedused (arg); // v6tmed t2hestiku j2rjekorda Object [] om = stabel.keySet().toArray(); Arrays.sort (om); // paaride v2ljastamine
jarjekord.Enqueue("Juku"); jarjekord.Enqueue("Kati"); jarjekord.Enqueue("Mati"); while(jarjekord.Count>0){ string eesnimi=jarjekord.Dequeue() as string; Console.WriteLine(eesnimi); 69 } } } /* D:kodu 606dotnet>Kollektsioon3 Juku Kati Mati */ Paisktabel Vahend andmepaaride hoidmiseks. Kord indekseerimise juures juba tutvusime selle vahendiga, siin vaatame talle veel korra otsa. Paisktabeli kannatab hoida näiteks konfiguratsioonifailist loetud omaduste väärtusi, kasutajanimele vastavaid seadeid või tõlkefaili andmeid. Põhiliseks tingimuseks on, et võti (kasutajanimi või omaduse nimi) ei kordu. Ning võtme järgi saab küsida väärtuse. Siin näites hoitakse inimeste nimedele vastavaid hindeid. if(ht.ContainsKey("Kati")){ Console.WriteLine("{0}", ht["Kati"]); } Kontrollitakse, kas Kati on nimede hulgas olemas