SlideShare a Scribd company logo
HHaasshh TTaabblleess aanndd SSeettss 
DDiiccttiioonnaarriieess,, HHaasshh TTaabblleess,, CCoolllliissiioonnss RReessoolluuttiioonn,, SSeettss 
SSvveettlliinn NNaakkoovv 
TTeelleerriikk CCoorrppoorraattiioonn 
wwwwww..tteelleerriikk..ccoomm
TTaabbllee ooff CCoonntteennttss 
11.. DDiiccttiioonnaarriieess 
22.. HHaasshh TTaabblleess 
33.. DDiiccttiioonnaarryy<<TTKKeeyy,, TTVVaalluuee>> CCllaassss 
44.. SSeettss 
2
DDiiccttiioonnaarriieess 
DDaattaa SSttrruuccttuurreess tthhaatt MMaapp KKeeyyss ttoo VVaalluueess
TThhee DDiiccttiioonnaarryy ((MMaapp)) AADDTT 
 TThhee aabbssttrraacctt ddaattaa ttyyppee ((AADDTT)) ""ddiiccttiioonnaarryy"" mmaappss 
kkeeyy ttoo vvaalluueess 
AAllssoo kknnoowwnn aass ""mmaapp"" oorr ""aassssoocciiaattiivvee aarrrraayy"" 
CCoonnttaaiinnss aa sseett ooff ((kkeeyy,, vvaalluuee)) ppaaiirrss 
 DDiiccttiioonnaarryy AADDTT ooppeerraattiioonnss:: 
AAdddd((kkeeyy,, vvaalluuee)) 
FFiinnddBByyKKeeyy((kkeeyy))  vvaalluuee 
DDeelleettee((kkeeyy)) 
 CCaann bbee iimmpplleemmeenntteedd iinn sseevveerraall wwaayyss 
LLiisstt,, aarrrraayy,, hhaasshh ttaabbllee,, bbaallaanncceedd ttrreeee,, ...... 
4
AADDTT DDiiccttiioonnaarryy –– EExxaammppllee 
 EExxaammppllee ddiiccttiioonnaarryy:: 
5 
KKeeyy VVaalluuee 
CC## Modern object-oriented programming 
llaanngguuaaggee ffoorr tthhee MMiiccrroossoofftt ..NNEETT ppllaattffoorrmm 
CCLLRR 
CCoommmmoonn LLaanngguuaaggee RRuunnttiimmee –– eexxeeccuuttiioonn 
eennggiinnee ffoorr ..NNEETT aasssseemmbblliieess,, iinntteeggrraall ppaarrtt 
ooff ..NNEETT FFrraammeewwoorrkk 
ccoommppiilleerr Software that transforms a computer 
pprrooggrraamm ttoo eexxeeccuuttaabbllee mmaacchhiinnee ccooddee 
…… ……
HHaasshh TTaabblleess 
WWhhaatt iiss HHaasshh TTaabbllee?? HHooww iitt WWoorrkkss??
HHaasshh TTaabbllee 
AA hhaasshh ttaabbllee iiss aann aarrrraayy tthhaatt hhoollddss aa sseett ooff 
((kkeeyy,, vvaalluuee)) ppaaiirrss 
 TThhee pprroocceessss ooff mmaappppiinngg aa kkeeyy ttoo aa ppoossiittiioonn iinn aa 
ttaabbllee iiss ccaalllleedd hhaasshhiinngg 
0 1 2 3 4 5 … m-1 
…… …… …… …… …… …… …… …… 
T 
hh((kk)) HHaasshh ttaabbllee 
ooff ssiizzee mm 
HHaasshh ffuunnccttiioonn 
hh:: kk →→ 00 …… mm--11 
7
Hash FFuunnccttiioonnss aanndd HHaasshhiinngg 
 AA hhaasshh ttaabbllee hhaass mm sslloottss,, iinnddeexxeedd ffrroomm 00 ttoo mm--11 
 AA hhaasshh ffuunnccttiioonn hh((kk)) mmaappss kkeeyyss ttoo ppoossiittiioonnss:: 
hh:: kk →→ 00 …… mm--11 
 FFoorr aannyy vvaalluuee kk iinn tthhee kkeeyy rraannggee aanndd ssoommee hhaasshh 
ffuunnccttiioonn hh wwee hhaavvee hh((kk)) == pp aanndd 00 ≤≤ pp << mm 
0 1 2 3 4 5 … m-1 
…… …… …… …… …… …… …… …… 
T 
hh((kk)) 
8
HHaasshhiinngg FFuunnccttiioonnss 
 PPeerrffeecctt hhaasshhiinngg ffuunnccttiioonn ((PPHHFF)) 
hh((kk)) :: oonnee--ttoo--oonnee mmaappppiinngg ooff eeaacchh kkeeyy kk ttoo aann 
iinntteeggeerr iinn tthhee rraannggee [[00,, mm--11]] 
TThhee PPHHFF mmaappss eeaacchh kkeeyy ttoo aa ddiissttiinncctt iinntteeggeerr 
wwiitthhiinn ssoommee mmaannaaggeeaabbllee rraannggee 
 FFiinnddiinngg aa ppeerrffeecctt hhaasshhiinngg ffuunnccttiioonn iiss iinn mmoosstt 
ccaasseess iimmppoossssiibbllee 
MMoorree rreeaalliissttiiccaallllyy 
HHaasshh ffuunnccttiioonn hh((kk)) tthhaatt mmaappss mmoosstt ooff tthhee kkeeyyss 
oonnttoo uunniiqquuee iinntteeggeerrss,, bbuutt nnoott aallll 
9
CCoolllliissiioonnss iinn aa HHaasshh TTaabbllee 
AA ccoolllliissiioonn iiss tthhee ssiittuuaattiioonn wwhheenn ddiiffffeerreenntt kkeeyyss 
hhaavvee tthhee ssaammee hhaasshh vvaalluuee 
hh((kk11)) == hh((kk22)) ffoorr kk11 ≠≠ kk22 
WWhheenn tthhee nnuummbbeerr ooff ccoolllliissiioonnss iiss ssuuffffiicciieennttllyy 
ssmmaallll,, tthhee hhaasshh ttaabblleess wwoorrkk qquuiittee wweellll ((ffaasstt)) 
 SSeevveerraall ccoolllliissiioonnss rreessoolluuttiioonn ssttrraatteeggiieess eexxiisstt 
CChhaaiinniinngg iinn aa lliisstt 
UUssiinngg tthhee nneeiigghhbboorriinngg sslloottss ((lliinneeaarr pprroobbiinngg)) 
RRee--hhaasshhiinngg 
...... 
10
CCoolllliissiioonn RReessoolluuttiioonn:: CChhaaiinniinngg 
hh((""PPeesshhoo"")) == 44 
hh((""KKiirroo"")) == 22 
hh((""MMiimmii"")) == 11 
hh((""IIvvaann"")) == 22 
hh((""LLiillii"")) == mm--11 
0 1 2 3 4 … m-1 
Kiro 
Ivan 
null 
Mimi 
null 
Lili 
null 
Pesho 
null 
ccoolllliissiioonn 
CChhaaiinniinngg 
eelleemmeennttss iinn 
ccaassee ooff ccoolllliissiioonn 
nnuullll …… …… nnuullll …… …… …… 
T 
11
HHaasshh TTaabblleess aanndd EEffffiicciieennccyy 
HHaasshh ttaabblleess aarree tthhee mmoosstt eeffffiicciieenntt 
iimmpplleemmeennttaattiioonn ooff AADDTT ""ddiiccttiioonnaarryy"" 
AAdddd // FFiinndd // DDeelleettee ttaakkee jjuusstt ffeeww pprriimmiittiivvee 
ooppeerraattiioonnss 
SSppeeeedd ddooeess nnoott ddeeppeenndd oonn tthhee ssiizzee ooff tthhee hhaasshh-- 
ttaabbllee ((ccoonnssttaanntt ttiimmee)) 
EExxaammppllee:: ffiinnddiinngg aann eelleemmeenntt iinn aa hhaasshh--ttaabbllee 
wwiitthh 11 000000 000000 eelleemmeennttss,, ttaakkeess jjuusstt ffeeww sstteeppss 
FFiinnddiinngg aann eelleemmeenntt iinn aarrrraayy ooff 11 000000 000000 eelleemmeennttss 
ttaakkeess aavveerraaggee 50000 000000 sstteeppss 
12
Dictionaries –– IInntteerrffaacceess aanndd 
IImmpplleemmeennttaattiioonnss 
13
HHaasshh TTaabblleess iinn CC## 
TThhee DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> CCllaassss
DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> 
 IImmpplleemmeennttss tthhee AADDTT ddiiccttiioonnaarryy aass hhaasshh ttaabbllee 
 SSiizzee iiss ddyynnaammiiccaallllyy iinnccrreeaasseedd aass nneeeeddeedd 
 CCoonnttaaiinnss aa ccoolllleeccttiioonn ooff kkeeyy--vvaalluuee ppaaiirrss 
 CCoolllliissiioonnss aarree rreessoollvveedd bbyy cchhaaiinniinngg 
 EElleemmeennttss hhaavvee aallmmoosstt rraannddoomm oorrddeerr 
 OOrrddeerreedd bbyy tthhee hhaasshh ccooddee ooff tthhee kkeeyy 
 DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> rreelliieess oonn 
 OObbjjeecctt..EEqquuaallss(()) –– ffoorr ccoommppaarriinngg tthhee kkeeyyss 
 OObbjjeecctt..GGeettHHaasshhCCooddee(()) –– ffoorr ccaallccuullaattiinngg tthhee 
hhaasshh ccooddeess ooff tthhee kkeeyyss 
15
DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> ((22)) 
MMaajjoorr ooppeerraattiioonnss:: 
 AAdddd((TTKKeeyy,,TTVVaalluuee)) –– aaddddss aann eelleemmeenntt wwiitthh 
tthhee ssppeecciiffiieedd kkeeyy aanndd vvaalluuee 
 RReemmoovvee((TTKKeeyy)) –– rreemmoovveess tthhee eelleemmeenntt bbyy kkeeyy 
 tthhiiss[[]] –– ggeett//aadddd//rreeppllaaccee ooff eelleemmeenntt bbyy kkeeyy 
 CClleeaarr(()) –– rreemmoovveess aallll eelleemmeennttss 
 CCoouunntt –– rreettuurrnnss tthhee nnuummbbeerr ooff eelleemmeennttss 
 KKeeyyss –– rreettuurrnnss aa ccoolllleeccttiioonn ooff tthhee kkeeyyss 
VVaalluueess –– rreettuurrnnss aa ccoolllleeccttiioonn ooff tthhee vvaalluueess 
16
DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> ((33)) 
 MMaajjoorr ooppeerraattiioonnss:: 
 CCoonnttaaiinnssKKeeyy((TTKKeeyy)) –– cchheecckkss wwhheetthheerr tthhee 
ddiiccttiioonnaarryy ccoonnttaaiinnss ggiivveenn kkeeyy 
 CCoonnttaaiinnssVVaalluuee((TTVVaalluuee)) –– cchheecckkss wwhheetthheerr 
tthhee ddiiccttiioonnaarryy ccoonnttaaiinnss ggiivveenn vvaalluuee 
 WWaarrnniinngg:: ssllooww ooppeerraattiioonn!! 
 TTrryyGGeettVVaalluuee((TTKKeeyy,, oouutt TTVVaalluuee)) 
 IIff tthhee kkeeyy iiss ffoouunndd,, rreettuurrnnss iitt iinn tthhee TTVVaalluuee 
 OOtthheerrwwiissee rreettuurrnnss ffaallssee 
17
DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> –– 
EExxaammppllee 
DDiiccttiioonnaarryy<<ssttrriinngg,, iinntt>> ssttuuddeennttssMMaarrkkss == 
nneeww DDiiccttiioonnaarryy<<ssttrriinngg,, iinntt>>(());; 
ssttuuddeennttssMMaarrkkss..AAdddd((""IIvvaann"",, 44));; 
ssttuuddeennttssMMaarrkkss..AAdddd((""PPeetteerr"",, 66));; 
ssttuuddeennttssMMaarrkkss..AAdddd((""MMaarriiaa"",, 66));; 
ssttuuddeennttssMMaarrkkss..AAdddd((""GGeeoorrggee"",, 55));; 
iinntt ppeetteerrMMaarrkk == ssttuuddeennttssMMaarrkkss[[""PPeetteerr""]];; 
CCoonnssoollee..WWrriitteeLLiinnee((""PPeetteerr''ss mmaarrkk:: {{00}}"",, ppeetteerrMMaarrkk));; 
CCoonnssoollee..WWrriitteeLLiinnee((""IIss PPeetteerr iinn tthhee hhaasshh ttaabbllee:: {{00}}"",, 
ssttuuddeennttssMMaarrkkss..CCoonnttaaiinnssKKeeyy((""PPeetteerr""))));; 
CCoonnssoollee..WWrriitteeLLiinnee((""SSttuuddeennttss aanndd ggrraaddeess::""));; 
ffoorreeaacchh ((vvaarr ppaaiirr iinn ssttuuddeennttssMMaarrkkss)) 
{{ 
CCoonnssoollee..WWrriitteeLLiinnee((""{{00}} ---->> {{11}}"",, ppaaiirr..KKeeyy,, 
ppaaiirr..VVaalluuee));; 
}} 
18
DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> 
LLiivvee DDeemmoo
CCoouunnttiinngg tthhee WWoorrddss iinn aa TTeexxtt 
ssttrriinngg tteexxtt == ""aa tteexxtt,, ssoommee tteexxtt,, jjuusstt ssoommee tteexxtt"";; 
IIDDiiccttiioonnaarryy<<ssttrriinngg,, iinntt>> wwoorrddssCCoouunntt == 
nneeww DDiiccttiioonnaarryy<<ssttrriinngg,, iinntt>>(());; 
ssttrriinngg[[]] wwoorrddss == tteexxtt..SSpplliitt(('' '',, '',,'',, ''..''));; 
ffoorreeaacchh ((ssttrriinngg wwoorrdd iinn wwoorrddss)) 
{{ 
iinntt ccoouunntt == 11;; 
iiff ((wwoorrddssCCoouunntt..CCoonnttaaiinnssKKeeyy((wwoorrdd)))) 
ccoouunntt == wwoorrddssCCoouunntt[[wwoorrdd]] ++ 11;; 
wwoorrddssCCoouunntt[[wwoorrdd]] == ccoouunntt;; 
}} 
ffoorreeaacchh((vvaarr ppaaiirr iinn wwoorrddssCCoouunntt)) 
{{ 
CCoonnssoollee..WWrriitteeLLiinnee((""{{00}} -->> {{11}}"",, ppaaiirr..KKeeyy,, ppaaiirr..VVaalluuee));; 
}} 
20
BBaallaanncceedd TTrreeee DDiiccttiioonnaarriieess 
TThhee SSoorrtteeddDDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> CCllaassss
SSoorrtteeddDDiiccttiioonnaarryy 
<<TTKKeeyy,,TTVVaalluuee>> 
 SSoorrtteeddDDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> 
iimmpplleemmeennttss tthhee AADDTT ""ddiiccttiioonnaarryy"" aass sseellff-- 
bbaallaanncciinngg sseeaarrcchh ttrreeee 
EElleemmeennttss aarree aarrrraannggeedd iinn tthhee ttrreeee oorrddeerreedd bbyy kkeeyy 
TTrraavveerrssiinngg tthhee ttrreeee rreettuurrnnss tthhee eelleemmeennttss iinn 
iinnccrreeaassiinngg oorrddeerr 
AAdddd // FFiinndd // DDeelleettee ppeerrffoorrmm lloogg22((nn)) ooppeerraattiioonnss 
UUssee SSoorrtteeddDDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> 
wwhheenn yyoouu nneeeedd tthhee eelleemmeennttss ssoorrtteedd 
OOtthheerrwwiissee uussee DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> –– iitt 
hhaass bbeetttteerr ppeerrffoorrmmaannccee 
22
CCoouunnttiinngg WWoorrddss ((AAggaaiinn)) 
ssttrriinngg tteexxtt == ""aa tteexxtt,, ssoommee tteexxtt,, jjuusstt ssoommee tteexxtt"";; 
IIDDiiccttiioonnaarryy<<ssttrriinngg,, iinntt>> wwoorrddssCCoouunntt == 
nneeww SSoorrtteeddDDiiccttiioonnaarryy<<ssttrriinngg,, iinntt>>(());; 
ssttrriinngg[[]] wwoorrddss == tteexxtt..SSpplliitt((' ',, ',,',, '..'));; 
ffoorreeaacchh ((ssttrriinngg wwoorrdd iinn wwoorrddss)) 
{{ 
iinntt ccoouunntt == 11;; 
iiff ((wwoorrddssCCoouunntt..CCoonnttaaiinnssKKeeyy((wwoorrdd)))) 
ccoouunntt == wwoorrddssCCoouunntt[[wwoorrdd]] ++ 11;; 
wwoorrddssCCoouunntt[[wwoorrdd]] == ccoouunntt;; 
}} 
ffoorreeaacchh((vvaarr ppaaiirr iinn wwoorrddssCCoouunntt)) 
{{ 
CCoonnssoollee..WWrriitteeLLiinnee((""{{00}} -->> {{11}}"",, ppaaiirr..KKeeyy,, ppaaiirr..VVaalluuee));; 
}} 
23
CCoommppaarriinngg DDiiccttiioonnaarryy KKeeyyss 
UUssiinngg ccuussttoomm kkeeyy ccllaasssseess iinn DDiiccttiioonnaarryy<<TTKKeeyy,, 
TTVVaalluuee>> aanndd SSoorrtteeddDDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>>
IICCoommppaarraabbllee<<TT>> 
 DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> rreelliieess oonn 
 OObbjjeecctt..EEqquuaallss(()) –– ffoorr ccoommppaarriinngg tthhee kkeeyyss 
 OObbjjeecctt..GGeettHHaasshhCCooddee(()) –– ffoorr ccaallccuullaattiinngg tthhee 
hhaasshh ccooddeess ooff tthhee kkeeyyss 
 SSoorrtteeddDDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> rreelliieess oonn 
IICCoommppaarraabbllee<<TT>> ffoorr oorrddeerriinngg tthhee kkeeyyss 
 BBuuiilltt--iinn ttyyppeess lliikkee iinntt,, lloonngg,, ffllooaatt,, ssttrriinngg 
aanndd DDaatteeTTiimmee aallrreeaaddyy iimmpplleemmeenntt EEqquuaallss(()),, 
GGeettHHaasshhCCooddee(()) aanndd IICCoommppaarraabbllee<<TT>> 
 OOtthheerr ttyyppeess uusseedd wwhheenn uusseedd aass ddiiccttiioonnaarryy kkeeyyss 
sshhoouulldd pprroovviiddee ccuussttoomm iimmpplleemmeennttaattiioonnss 
25
IImmpplleemmeennttiinngg EEqquuaallss(()) aanndd 
GGeettHHaasshhCCooddee(()) 
26 
ppuubblliicc ssttrruucctt PPooiinntt 
{{ 
ppuubblliicc iinntt XX {{ ggeett;; sseett;; }} 
ppuubblliicc iinntt YY {{ ggeett;; sseett;; }} 
ppuubblliicc oovveerrrriiddee bbooooll EEqquuaallss((OObbjjeecctt oobbjj)) 
{{ 
iiff ((!!((oobbjj iiss PPooiinntt)) |||| ((oobbjj ==== nnuullll)))) rreettuurrnn ffaallssee;; 
PPooiinntt pp == ((PPooiinntt))oobbjj;; 
rreettuurrnn ((XX ==== pp..XX)) &&&& ((YY ==== pp..YY));; 
}} 
ppuubblliicc oovveerrrriiddee iinntt GGeettHHaasshhCCooddee(()) 
{{ 
rreettuurrnn ((XX <<<< 1166 || XX >>>> 1166)) ^^ YY;; 
}} 
}}
IImmpplleemmeennttiinngg IICCoommppaarraabbllee<<TT>> 
27 
ppuubblliicc ssttrruucctt PPooiinntt :: IICCoommppaarraabbllee<<PPooiinntt>> 
{{ 
ppuubblliicc iinntt XX {{ ggeett;; sseett;; }} 
ppuubblliicc iinntt YY {{ ggeett;; sseett;; }} 
ppuubblliicc iinntt CCoommppaarreeTToo((PPooiinntt ootthheerrPPooiinntt)) 
{{ 
iiff ((XX !!== ootthheerrPPooiinntt..XX)) 
{{ 
rreettuurrnn tthhiiss..XX..CCoommppaarreeTToo((ootthheerrPPooiinntt..XX));; 
}} 
eellssee 
{{ 
rreettuurrnn tthhiiss..YY..CCoommppaarreeTToo((ootthheerrPPooiinntt..YY));; 
}} 
}} 
}}
SSeettss 
SSeettss ooff EElleemmeennttss
SSeett aanndd BBaagg AADDTTss 
 TThhee aabbssttrraacctt ddaattaa ttyyppee ((AADDTT)) ""sseett"" kkeeeeppss aa sseett ooff 
eelleemmeennttss wwiitthh nnoo dduupplliiccaatteess 
 SSeettss wwiitthh dduupplliiccaatteess aarree aallssoo kknnoowwnn aass AADDTT ""bbaagg"" 
 SSeett ooppeerraattiioonnss:: 
AAdddd((eelleemmeenntt)) 
CCoonnttaaiinnss((eelleemmeenntt))  ttrruuee // ffaallssee 
DDeelleettee((eelleemmeenntt)) 
UUnniioonn((sseett)) // IInntteerrsseecctt((sseett)) 
 SSeettss ccaann bbee iimmpplleemmeenntteedd iinn sseevveerraall wwaayyss 
LLiisstt,, aarrrraayy,, hhaasshh ttaabbllee,, bbaallaanncceedd ttrreeee,, ...... 
29
SSeettss –– IInntteerrffaacceess aanndd 
IImmpplleemmeennttaattiioonnss 
30
HHaasshhSSeett<<TT>> 
 HHaasshhSSeett<<TT>> iimmpplleemmeennttss AADDTT sseett bbyy hhaasshh ttaabbllee 
EElleemmeennttss aarree iinn nnoo ppaarrttiiccuullaarr oorrddeerr 
 AAllll mmaajjoorr ooppeerraattiioonnss aarree ffaasstt:: 
AAdddd((eelleemmeenntt)) –– aappppeennddss aann eelleemmeenntt ttoo tthhee sseett 
DDooeess nnootthhiinngg iiff tthhee eelleemmeenntt aallrreeaaddyy eexxiissttss 
RReemmoovvee((eelleemmeenntt)) –– rreemmoovveess ggiivveenn eelleemmeenntt 
CCoouunntt –– rreettuurrnnss tthhee nnuummbbeerr ooff eelleemmeennttss 
UUnniioonnWWiitthh((sseett)) // IInntteerrsseeccttWWiitthh((sseett)) –– 
ppeerrffoorrmmss uunniioonn // iinntteerrsseeccttiioonn wwiitthh aannootthheerr sseett 
31
HHaasshhSSeett<<TT>> –– EExxaammppllee 
32 
IISSeett<<ssttrriinngg>> ffiirrssttSSeett == nneeww HHaasshhSSeett<<ssttrriinngg>>(( 
nneeww ssttrriinngg[[]] {{ ""SSQQLL"",, ""JJaavvaa"",, ""CC##"",, ""PPHHPP"" }}));; 
IISSeett<<ssttrriinngg>> sseeccoonnddSSeett == nneeww HHaasshhSSeett<<ssttrriinngg>>(( 
nneeww ssttrriinngg[[]] {{ ""OOrraaccllee"",, ""SSQQLL"",, ""MMyySSQQLL"" }}));; 
IISSeett<<ssttrriinngg>> uunniioonn == nneeww HHaasshhSSeett<<ssttrriinngg>>((ffiirrssttSSeett));; 
uunniioonn..UUnniioonnWWiitthh((sseeccoonnddSSeett));; 
PPrriinnttSSeett((uunniioonn));; //// SSQQLL JJaavvaa CC## PPHHPP OOrraaccllee MMyySSQQLL 
pprriivvaattee ssttaattiicc vvooiidd PPrriinnttSSeett<<TT>>((IISSeett<<TT>> sseett)) 
{{ 
ffoorreeaacchh ((vvaarr eelleemmeenntt iinn sseett)) 
{{ 
CCoonnssoollee..WWrriittee((""{{00}} "",, eelleemmeenntt));; 
}} 
CCoonnssoollee..WWrriitteeLLiinnee(());; 
}}
SSoorrtteeddSSeett<<TT>> 
 SSoorrtteeddSSeett<<TT>> iimmpplleemmeennttss AADDTT sseett bbyy bbaallaanncceedd 
sseeaarrcchh ttrreeee 
EElleemmeennttss aarree ssoorrtteedd iinn iinnccrreeaassiinngg oorrddeerr 
 EExxaammppllee:: 
33 
IISSeett<<ssttrriinngg>> ffiirrssttSSeett == nneeww SSoorrtteeddSSeett<<ssttrriinngg>>(( 
nneeww ssttrriinngg[[]] {{ ""SSQQLL"",, ""JJaavvaa"",, ""CC##"",, ""PPHHPP"" }}));; 
IISSeett<<ssttrriinngg>> sseeccoonnddSSeett == nneeww SSoorrtteeddSSeett<<ssttrriinngg>>(( 
nneeww ssttrriinngg[[]] {{ ""OOrraaccllee"",, ""SSQQLL"",, ""MMyySSQQLL"" }}));; 
IISSeett<<ssttrriinngg>> uunniioonn == nneeww HHaasshhSSeett<<ssttrriinngg>>((ffiirrssttSSeett));; 
uunniioonn..UUnniioonnWWiitthh((sseeccoonnddSSeett));; 
PPrriinnttSSeett((uunniioonn));; //// CC## JJaavvaa PPHHPP SSQQLL MMyySSQQLL OOrraaccllee
HHaasshhSSeett<<TT>> aanndd 
SSoorrtteeddSSeett<<TT>> 
LLiivvee DDeemmoo
SSuummmmaarryy 
 DDiiccttiioonnaarriieess mmaapp kkeeyy ttoo vvaalluuee 
CCaann bbee iimmpplleemmeenntteedd aass hhaasshh ttaabbllee oorr bbaallaanncceedd 
sseeaarrcchh ttrreeee 
 HHaasshh--ttaabblleess mmaapp kkeeyyss ttoo vvaalluueess 
RReellyy oonn hhaasshh--ffuunnccttiioonnss ttoo ddiissttrriibbuuttee tthhee kkeeyyss iinn tthhee 
ttaabbllee 
CCoolllliissiioonnss nneeeeddss rreessoolluuttiioonn aallggoorriitthhmm ((ee..gg.. 
cchhaaiinniinngg)) 
VVeerryy ffaasstt aadddd // ffiinndd // ddeelleettee 
 SSeettss hhoolldd aa ggrroouupp ooff eelleemmeennttss 
HHaasshh--ttaabbllee oorr bbaallaanncceedd ttrreeee iimmpplleemmeennttaattiioonnss 
35
HHaasshh TTaabblleess aanndd SSeettss 
QQuueessttiioonnss?? 
http://academy.telerik.com
EExxeerrcciisseess 
11.. WWrriittee aa pprrooggrraamm tthhaatt ccoouunnttss iinn aa ggiivveenn aarrrraayy ooff 
iinntteeggeerrss tthhee nnuummbbeerr ooff ooccccuurrrreenncceess ooff eeaacchh iinntteeggeerr.. 
UUssee DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>>.. 
EExxaammppllee:: aarrrraayy == {{33,, 44,, 44,, 22,, 33,, 33,, 44,, 33,, 22}} 
22  22 ttiimmeess 
33  44 ttiimmeess 
44  33 ttiimmeess 
11.. WWrriittee aa pprrooggrraamm tthhaatt eexxttrraaccttss ffrroomm aa ggiivveenn sseeqquueennccee 
ooff ssttrriinnggss aallll eelleemmeennttss tthhaatt pprreesseenntt iinn iitt oodddd nnuummbbeerr 
ooff ttiimmeess.. EExxaammppllee:: 
{{CC##,, SSQQLL,, PPHHPP,, PPHHPP,, SSQQLL,, SSQQLL }}  {{CC##,, SSQQLL}} 
37
EExxeerrcciisseess ((22)) 
33.. WWrriittee aa pprrooggrraamm tthhaatt ccoouunnttss hhooww mmaannyy ttiimmeess eeaacchh 
wwoorrdd ffrroomm ggiivveenn tteexxtt ffiillee wwoorrddss..ttxxtt aappppeeaarrss iinn iitt.. 
TThhee cchhaarraacctteerr ccaassiinngg ddiiffffeerreenncceess sshhoouulldd bbee iiggnnoorreedd.. 
TThhee rreessuulltt wwoorrddss sshhoouulldd bbee oorrddeerreedd bbyy tthheeiirr nnuummbbeerr 
ooff ooccccuurrrreenncceess iinn tthhee tteexxtt.. EExxaammppllee:: 
iiss  22 
tthhee  22 
tthhiiss  33 
tteexxtt  66 
38 
TThhiiss iiss tthhee TTEEXXTT.. TTeexxtt,, tteexxtt,, tteexxtt –– TTHHIISS TTEEXXTT!! 
IIss tthhiiss tthhee tteexxtt??
EExxeerrcciisseess ((33)) 
39 
44.. IImmpplleemmeenntt tthhee ddaattaa ssttrruuccttuurree ""hhaasshh ttaabbllee"" iinn aa ccllaassss 
HHaasshhTTaabbllee<<KK,,TT>>.. KKeeeepp tthhee ddaattaa iinn aarrrraayy ooff lliissttss ooff kkeeyy-- 
vvaalluuee ppaaiirrss ((LLiinnkkeeddLLiisstt<<KKeeyyVVaalluueePPaaiirr<<KK,,TT>>>>[[]]) wwiitthh 
iinniittiiaall ccaappaacciittyy ooff 1166.. WWhheenn tthhee hhaasshh ttaabbllee llooaadd rruunnss 
oovveerr 7755%%,, ppeerrffoorrmm rreessiizziinngg ttoo 22 ttiimmeess llaarrggeerr ccaappaacciittyy.. 
IImmpplleemmeenntt tthhee ffoolllloowwiinngg mmeetthhooddss aanndd pprrooppeerrttiieess:: 
AAdddd((kkeeyy,, vvaalluuee)),, Fiinndd((kkeeyy))vvaalluuee,, 
RReemmoovvee(( kkeeyy)),, CCoouunntt,, CClleeaarr(()),, tthhiiss[[]],, KKeeyyss.. TTrryy 
ttoo mmaakkee tthhee hhaasshh ttaabbllee ttoo ssuuppppoorrtt iitteerraattiinngg oovveerr iittss 
eelleemmeennttss wwiitthh ffoorreeaacchh.. 
55.. IImmpplleemmeenntt tthhee ddaattaa ssttrruuccttuurree ""sseett"" iinn aa ccllaassss 
HHaasshheeddSSeett<<TT>> uussiinngg yyoouurr ccllaassss HHaasshhTTaabbllee<<TT,,TT>> ttoo 
hhoolldd tthhee eelleemmeennttss.. IImmpplleemmeenntt aallll ssttaannddaarrdd sseett 
ooppeerraattiioonnss lliikkee AAdddd((TT)),, Fiinndd((TT)),, RReemmoovvee((TT)),, CCoouunntt,, 
CClleeaarr(()),, uunniioonn aanndd iinntteerrsseecctt..

More Related Content

What's hot

Www.cpafap.embrapa.br aquicultura download_tanques_danielmontagner
Www.cpafap.embrapa.br aquicultura download_tanques_danielmontagnerWww.cpafap.embrapa.br aquicultura download_tanques_danielmontagner
Www.cpafap.embrapa.br aquicultura download_tanques_danielmontagner
Christiano Leal Portes
 
Jesus in islam
Jesus in islamJesus in islam
Jesus in islam
Khalid Abdullah
 
21 High-quality programming code construction part-ii
21 High-quality programming code construction part-ii21 High-quality programming code construction part-ii
21 High-quality programming code construction part-ii
maznabili
 
The Digestive System Powerpoint
The Digestive System   PowerpointThe Digestive System   Powerpoint
The Digestive System Powerpointangellacx
 
1 pigmentation
1 pigmentation1 pigmentation
1 pigmentationAhmed Amer
 
Implementation of panic alert mechanism for critical imaging findings (practi...
Implementation of panic alert mechanism for critical imaging findings(practi...Implementation of panic alert mechanism for critical imaging findings(practi...
Implementation of panic alert mechanism for critical imaging findings (practi...
Khairy Abdella
 
Avaliacao de investimentos
Avaliacao de investimentosAvaliacao de investimentos
Avaliacao de investimentos
danilobotucatu
 
Anatomiadelaparatoreproductorfemenino
Anatomiadelaparatoreproductorfemenino Anatomiadelaparatoreproductorfemenino
Anatomiadelaparatoreproductorfemenino
Karen Toledo
 
Infective endocarditis case presentation by dr imtiaz
Infective endocarditis case presentation by dr imtiazInfective endocarditis case presentation by dr imtiaz
Infective endocarditis case presentation by dr imtiaz
West Medicine Ward
 
Drift tectonics gn
Drift  tectonics gnDrift  tectonics gn
Drift tectonics gn
Crossleybp
 
Safe laparoscopy
Safe laparoscopySafe laparoscopy
Safe laparoscopy
Mamdouh Sabry
 
Spinal injuries
Spinal injuriesSpinal injuries
Spinal injuries
Alexander Bardis
 
4th grade, lesson plan
4th grade, lesson plan4th grade, lesson plan
4th grade, lesson plan
cpapadak
 
Criminalistics questionnaires
Criminalistics questionnairesCriminalistics questionnaires
Criminalistics questionnaires
Alexzur
 
Chest X-ray for the undergraduate
Chest X-ray for the undergraduateChest X-ray for the undergraduate
Chest X-ray for the undergraduate
hazem youssef
 
darcys law
darcys lawdarcys law
darcys law
Fatonah Munsai
 
Business plan presentation_format
Business plan presentation_formatBusiness plan presentation_format
Business plan presentation_format
bindur87
 

What's hot (20)

Www.cpafap.embrapa.br aquicultura download_tanques_danielmontagner
Www.cpafap.embrapa.br aquicultura download_tanques_danielmontagnerWww.cpafap.embrapa.br aquicultura download_tanques_danielmontagner
Www.cpafap.embrapa.br aquicultura download_tanques_danielmontagner
 
Jesus in islam
Jesus in islamJesus in islam
Jesus in islam
 
21 High-quality programming code construction part-ii
21 High-quality programming code construction part-ii21 High-quality programming code construction part-ii
21 High-quality programming code construction part-ii
 
The Digestive System Powerpoint
The Digestive System   PowerpointThe Digestive System   Powerpoint
The Digestive System Powerpoint
 
1 pigmentation
1 pigmentation1 pigmentation
1 pigmentation
 
Implementation of panic alert mechanism for critical imaging findings (practi...
Implementation of panic alert mechanism for critical imaging findings(practi...Implementation of panic alert mechanism for critical imaging findings(practi...
Implementation of panic alert mechanism for critical imaging findings (practi...
 
Avaliacao de investimentos
Avaliacao de investimentosAvaliacao de investimentos
Avaliacao de investimentos
 
Anatomiadelaparatoreproductorfemenino
Anatomiadelaparatoreproductorfemenino Anatomiadelaparatoreproductorfemenino
Anatomiadelaparatoreproductorfemenino
 
Infective endocarditis case presentation by dr imtiaz
Infective endocarditis case presentation by dr imtiazInfective endocarditis case presentation by dr imtiaz
Infective endocarditis case presentation by dr imtiaz
 
Drift tectonics gn
Drift  tectonics gnDrift  tectonics gn
Drift tectonics gn
 
The complement system
The complement systemThe complement system
The complement system
 
Ra lecture - muscles of the face
Ra   lecture - muscles of the faceRa   lecture - muscles of the face
Ra lecture - muscles of the face
 
Safe laparoscopy
Safe laparoscopySafe laparoscopy
Safe laparoscopy
 
Aula 1 (2)
Aula 1 (2)Aula 1 (2)
Aula 1 (2)
 
Spinal injuries
Spinal injuriesSpinal injuries
Spinal injuries
 
4th grade, lesson plan
4th grade, lesson plan4th grade, lesson plan
4th grade, lesson plan
 
Criminalistics questionnaires
Criminalistics questionnairesCriminalistics questionnaires
Criminalistics questionnaires
 
Chest X-ray for the undergraduate
Chest X-ray for the undergraduateChest X-ray for the undergraduate
Chest X-ray for the undergraduate
 
darcys law
darcys lawdarcys law
darcys law
 
Business plan presentation_format
Business plan presentation_formatBusiness plan presentation_format
Business plan presentation_format
 

Viewers also liked

09 Methods
09 Methods09 Methods
09 Methods
maznabili
 
00 Fundamentals of csharp course introduction
00 Fundamentals of csharp course introduction00 Fundamentals of csharp course introduction
00 Fundamentals of csharp course introduction
maznabili
 
20 Object-oriented programming principles
20 Object-oriented programming principles20 Object-oriented programming principles
20 Object-oriented programming principles
maznabili
 
Everything You know about CSS is Wrong
Everything You know about CSS is WrongEverything You know about CSS is Wrong
Everything You know about CSS is Wrong
chandleryu
 
22 Methodology of problem solving
22 Methodology of problem solving22 Methodology of problem solving
22 Methodology of problem solving
maznabili
 
Creating a CSS layout from scratch
Creating a CSS layout from scratchCreating a CSS layout from scratch
Creating a CSS layout from scratch
Designveloper
 
04 Console input output-
04 Console input output-04 Console input output-
04 Console input output-
maznabili
 
Floating
FloatingFloating
Floating
Danielle Larson
 
Steps for CSS Layout
Steps for CSS LayoutSteps for CSS Layout
Steps for CSS Layout
Alexander Sperl
 
05 Conditional statements
05 Conditional statements05 Conditional statements
05 Conditional statements
maznabili
 
08 Numeral systems
08 Numeral systems08 Numeral systems
08 Numeral systems
maznabili
 
12 Exceptions handling
12 Exceptions handling12 Exceptions handling
12 Exceptions handling
maznabili
 
03 Operators and expressions
03 Operators and expressions03 Operators and expressions
03 Operators and expressions
maznabili
 
15 Text files
15 Text files15 Text files
15 Text files
maznabili
 
01 Introduction to programming
01 Introduction to programming01 Introduction to programming
01 Introduction to programming
maznabili
 
11 Using classes and objects
11 Using classes and objects11 Using classes and objects
11 Using classes and objects
maznabili
 
13 Strings and text processing
13 Strings and text processing13 Strings and text processing
13 Strings and text processing
maznabili
 

Viewers also liked (20)

09 Methods
09 Methods09 Methods
09 Methods
 
00 Fundamentals of csharp course introduction
00 Fundamentals of csharp course introduction00 Fundamentals of csharp course introduction
00 Fundamentals of csharp course introduction
 
20 Object-oriented programming principles
20 Object-oriented programming principles20 Object-oriented programming principles
20 Object-oriented programming principles
 
Layout
LayoutLayout
Layout
 
Css advance
Css   advanceCss   advance
Css advance
 
Everything You know about CSS is Wrong
Everything You know about CSS is WrongEverything You know about CSS is Wrong
Everything You know about CSS is Wrong
 
Css positioning
Css positioningCss positioning
Css positioning
 
22 Methodology of problem solving
22 Methodology of problem solving22 Methodology of problem solving
22 Methodology of problem solving
 
Creating a CSS layout from scratch
Creating a CSS layout from scratchCreating a CSS layout from scratch
Creating a CSS layout from scratch
 
04 Console input output-
04 Console input output-04 Console input output-
04 Console input output-
 
Floating
FloatingFloating
Floating
 
Steps for CSS Layout
Steps for CSS LayoutSteps for CSS Layout
Steps for CSS Layout
 
05 Conditional statements
05 Conditional statements05 Conditional statements
05 Conditional statements
 
08 Numeral systems
08 Numeral systems08 Numeral systems
08 Numeral systems
 
12 Exceptions handling
12 Exceptions handling12 Exceptions handling
12 Exceptions handling
 
03 Operators and expressions
03 Operators and expressions03 Operators and expressions
03 Operators and expressions
 
15 Text files
15 Text files15 Text files
15 Text files
 
01 Introduction to programming
01 Introduction to programming01 Introduction to programming
01 Introduction to programming
 
11 Using classes and objects
11 Using classes and objects11 Using classes and objects
11 Using classes and objects
 
13 Strings and text processing
13 Strings and text processing13 Strings and text processing
13 Strings and text processing
 

Similar to 18 Hash tables and sets

The digestive-system-powerpoint-
The digestive-system-powerpoint-The digestive-system-powerpoint-
The digestive-system-powerpoint-abreham abush
 
Data Structures- Part8 stacks and queues
Data Structures- Part8 stacks and queuesData Structures- Part8 stacks and queues
Data Structures- Part8 stacks and queues
Abdullah Al-hazmy
 
Moneymkt
MoneymktMoneymkt
Moneymkt
arunsavithri
 
Fármacos sistema nervioso y epinefrina
Fármacos sistema nervioso y epinefrinaFármacos sistema nervioso y epinefrina
Fármacos sistema nervioso y epinefrina
Jose Dega
 
GastritisZaydoon
GastritisZaydoonGastritisZaydoon
GastritisZaydoonZay Doon
 
Economics of terrorism ihs webinar
Economics of terrorism   ihs webinarEconomics of terrorism   ihs webinar
Economics of terrorism ihs webinar
LearnLiberty
 
Training methods
Training methodsTraining methods
Training methods
begraj SIWAL
 
sistema operativo
sistema operativosistema operativo
sistema operativo
Shamyta Oviedo Montalvo
 
#7 dysbiosis and leaky gut syndrome
#7 dysbiosis and leaky gut syndrome#7 dysbiosis and leaky gut syndrome
#7 dysbiosis and leaky gut syndrome
Home Makers
 
Ji tfinal
Ji tfinalJi tfinal
Ji tfinal
mastahnsilu143
 
CS201- Introduction to Programming- Lecture 10
CS201- Introduction to Programming- Lecture 10CS201- Introduction to Programming- Lecture 10
CS201- Introduction to Programming- Lecture 10
Bilal Ahmed
 
Discinecias paroxisticas
Discinecias paroxisticasDiscinecias paroxisticas
Discinecias paroxisticas
Comunidad Cetram
 
05 The Learning Process
05 The Learning Process05 The Learning Process
05 The Learning Process
Peter Fenrich
 
Lect 1 physical assessment
Lect 1 physical assessmentLect 1 physical assessment
Lect 1 physical assessmentAli Mohamed Aziz
 
HTML basic
HTML basicHTML basic
HTML basic
Yoeung Vibol
 
презентация проекта Picture 1 анг версия
презентация проекта Picture 1 анг версияпрезентация проекта Picture 1 анг версия
презентация проекта Picture 1 анг версия92701
 
Chapter 1 notes abs 10/29
Chapter 1 notes abs 10/29Chapter 1 notes abs 10/29
Chapter 1 notes abs 10/29
cwood
 
La inmunohistoquimica
La inmunohistoquimicaLa inmunohistoquimica
La inmunohistoquimica
Francisco Javier Alves Ferreira
 
Medellin, 29 de septiembre de 2014
Medellin, 29 de septiembre de 2014Medellin, 29 de septiembre de 2014
Medellin, 29 de septiembre de 2014
Miguel Yasuyuki Hirota
 
Tutorial final dic
Tutorial final dicTutorial final dic
Tutorial final dicizhar fatima
 

Similar to 18 Hash tables and sets (20)

The digestive-system-powerpoint-
The digestive-system-powerpoint-The digestive-system-powerpoint-
The digestive-system-powerpoint-
 
Data Structures- Part8 stacks and queues
Data Structures- Part8 stacks and queuesData Structures- Part8 stacks and queues
Data Structures- Part8 stacks and queues
 
Moneymkt
MoneymktMoneymkt
Moneymkt
 
Fármacos sistema nervioso y epinefrina
Fármacos sistema nervioso y epinefrinaFármacos sistema nervioso y epinefrina
Fármacos sistema nervioso y epinefrina
 
GastritisZaydoon
GastritisZaydoonGastritisZaydoon
GastritisZaydoon
 
Economics of terrorism ihs webinar
Economics of terrorism   ihs webinarEconomics of terrorism   ihs webinar
Economics of terrorism ihs webinar
 
Training methods
Training methodsTraining methods
Training methods
 
sistema operativo
sistema operativosistema operativo
sistema operativo
 
#7 dysbiosis and leaky gut syndrome
#7 dysbiosis and leaky gut syndrome#7 dysbiosis and leaky gut syndrome
#7 dysbiosis and leaky gut syndrome
 
Ji tfinal
Ji tfinalJi tfinal
Ji tfinal
 
CS201- Introduction to Programming- Lecture 10
CS201- Introduction to Programming- Lecture 10CS201- Introduction to Programming- Lecture 10
CS201- Introduction to Programming- Lecture 10
 
Discinecias paroxisticas
Discinecias paroxisticasDiscinecias paroxisticas
Discinecias paroxisticas
 
05 The Learning Process
05 The Learning Process05 The Learning Process
05 The Learning Process
 
Lect 1 physical assessment
Lect 1 physical assessmentLect 1 physical assessment
Lect 1 physical assessment
 
HTML basic
HTML basicHTML basic
HTML basic
 
презентация проекта Picture 1 анг версия
презентация проекта Picture 1 анг версияпрезентация проекта Picture 1 анг версия
презентация проекта Picture 1 анг версия
 
Chapter 1 notes abs 10/29
Chapter 1 notes abs 10/29Chapter 1 notes abs 10/29
Chapter 1 notes abs 10/29
 
La inmunohistoquimica
La inmunohistoquimicaLa inmunohistoquimica
La inmunohistoquimica
 
Medellin, 29 de septiembre de 2014
Medellin, 29 de septiembre de 2014Medellin, 29 de septiembre de 2014
Medellin, 29 de septiembre de 2014
 
Tutorial final dic
Tutorial final dicTutorial final dic
Tutorial final dic
 

More from maznabili

21 high-quality programming code construction part-i
21 high-quality programming code construction part-i21 high-quality programming code construction part-i
21 high-quality programming code construction part-i
maznabili
 
17 Trees and graphs
17 Trees and graphs17 Trees and graphs
17 Trees and graphs
maznabili
 
16 Linear data structures
16 Linear data structures16 Linear data structures
16 Linear data structures
maznabili
 
14 Defining classes
14 Defining classes14 Defining classes
14 Defining classes
maznabili
 
10 Recursion
10 Recursion10 Recursion
10 Recursion
maznabili
 
07 Arrays
07 Arrays07 Arrays
07 Arrays
maznabili
 
06 Loops
06 Loops06 Loops
06 Loops
maznabili
 
02 Primitive data types and variables
02 Primitive data types and variables02 Primitive data types and variables
02 Primitive data types and variables
maznabili
 

More from maznabili (8)

21 high-quality programming code construction part-i
21 high-quality programming code construction part-i21 high-quality programming code construction part-i
21 high-quality programming code construction part-i
 
17 Trees and graphs
17 Trees and graphs17 Trees and graphs
17 Trees and graphs
 
16 Linear data structures
16 Linear data structures16 Linear data structures
16 Linear data structures
 
14 Defining classes
14 Defining classes14 Defining classes
14 Defining classes
 
10 Recursion
10 Recursion10 Recursion
10 Recursion
 
07 Arrays
07 Arrays07 Arrays
07 Arrays
 
06 Loops
06 Loops06 Loops
06 Loops
 
02 Primitive data types and variables
02 Primitive data types and variables02 Primitive data types and variables
02 Primitive data types and variables
 

18 Hash tables and sets

  • 1. HHaasshh TTaabblleess aanndd SSeettss DDiiccttiioonnaarriieess,, HHaasshh TTaabblleess,, CCoolllliissiioonnss RReessoolluuttiioonn,, SSeettss SSvveettlliinn NNaakkoovv TTeelleerriikk CCoorrppoorraattiioonn wwwwww..tteelleerriikk..ccoomm
  • 2. TTaabbllee ooff CCoonntteennttss 11.. DDiiccttiioonnaarriieess 22.. HHaasshh TTaabblleess 33.. DDiiccttiioonnaarryy<<TTKKeeyy,, TTVVaalluuee>> CCllaassss 44.. SSeettss 2
  • 3. DDiiccttiioonnaarriieess DDaattaa SSttrruuccttuurreess tthhaatt MMaapp KKeeyyss ttoo VVaalluueess
  • 4. TThhee DDiiccttiioonnaarryy ((MMaapp)) AADDTT  TThhee aabbssttrraacctt ddaattaa ttyyppee ((AADDTT)) ""ddiiccttiioonnaarryy"" mmaappss kkeeyy ttoo vvaalluueess AAllssoo kknnoowwnn aass ""mmaapp"" oorr ""aassssoocciiaattiivvee aarrrraayy"" CCoonnttaaiinnss aa sseett ooff ((kkeeyy,, vvaalluuee)) ppaaiirrss  DDiiccttiioonnaarryy AADDTT ooppeerraattiioonnss:: AAdddd((kkeeyy,, vvaalluuee)) FFiinnddBByyKKeeyy((kkeeyy))  vvaalluuee DDeelleettee((kkeeyy))  CCaann bbee iimmpplleemmeenntteedd iinn sseevveerraall wwaayyss LLiisstt,, aarrrraayy,, hhaasshh ttaabbllee,, bbaallaanncceedd ttrreeee,, ...... 4
  • 5. AADDTT DDiiccttiioonnaarryy –– EExxaammppllee  EExxaammppllee ddiiccttiioonnaarryy:: 5 KKeeyy VVaalluuee CC## Modern object-oriented programming llaanngguuaaggee ffoorr tthhee MMiiccrroossoofftt ..NNEETT ppllaattffoorrmm CCLLRR CCoommmmoonn LLaanngguuaaggee RRuunnttiimmee –– eexxeeccuuttiioonn eennggiinnee ffoorr ..NNEETT aasssseemmbblliieess,, iinntteeggrraall ppaarrtt ooff ..NNEETT FFrraammeewwoorrkk ccoommppiilleerr Software that transforms a computer pprrooggrraamm ttoo eexxeeccuuttaabbllee mmaacchhiinnee ccooddee …… ……
  • 6. HHaasshh TTaabblleess WWhhaatt iiss HHaasshh TTaabbllee?? HHooww iitt WWoorrkkss??
  • 7. HHaasshh TTaabbllee AA hhaasshh ttaabbllee iiss aann aarrrraayy tthhaatt hhoollddss aa sseett ooff ((kkeeyy,, vvaalluuee)) ppaaiirrss  TThhee pprroocceessss ooff mmaappppiinngg aa kkeeyy ttoo aa ppoossiittiioonn iinn aa ttaabbllee iiss ccaalllleedd hhaasshhiinngg 0 1 2 3 4 5 … m-1 …… …… …… …… …… …… …… …… T hh((kk)) HHaasshh ttaabbllee ooff ssiizzee mm HHaasshh ffuunnccttiioonn hh:: kk →→ 00 …… mm--11 7
  • 8. Hash FFuunnccttiioonnss aanndd HHaasshhiinngg  AA hhaasshh ttaabbllee hhaass mm sslloottss,, iinnddeexxeedd ffrroomm 00 ttoo mm--11  AA hhaasshh ffuunnccttiioonn hh((kk)) mmaappss kkeeyyss ttoo ppoossiittiioonnss:: hh:: kk →→ 00 …… mm--11  FFoorr aannyy vvaalluuee kk iinn tthhee kkeeyy rraannggee aanndd ssoommee hhaasshh ffuunnccttiioonn hh wwee hhaavvee hh((kk)) == pp aanndd 00 ≤≤ pp << mm 0 1 2 3 4 5 … m-1 …… …… …… …… …… …… …… …… T hh((kk)) 8
  • 9. HHaasshhiinngg FFuunnccttiioonnss  PPeerrffeecctt hhaasshhiinngg ffuunnccttiioonn ((PPHHFF)) hh((kk)) :: oonnee--ttoo--oonnee mmaappppiinngg ooff eeaacchh kkeeyy kk ttoo aann iinntteeggeerr iinn tthhee rraannggee [[00,, mm--11]] TThhee PPHHFF mmaappss eeaacchh kkeeyy ttoo aa ddiissttiinncctt iinntteeggeerr wwiitthhiinn ssoommee mmaannaaggeeaabbllee rraannggee  FFiinnddiinngg aa ppeerrffeecctt hhaasshhiinngg ffuunnccttiioonn iiss iinn mmoosstt ccaasseess iimmppoossssiibbllee MMoorree rreeaalliissttiiccaallllyy HHaasshh ffuunnccttiioonn hh((kk)) tthhaatt mmaappss mmoosstt ooff tthhee kkeeyyss oonnttoo uunniiqquuee iinntteeggeerrss,, bbuutt nnoott aallll 9
  • 10. CCoolllliissiioonnss iinn aa HHaasshh TTaabbllee AA ccoolllliissiioonn iiss tthhee ssiittuuaattiioonn wwhheenn ddiiffffeerreenntt kkeeyyss hhaavvee tthhee ssaammee hhaasshh vvaalluuee hh((kk11)) == hh((kk22)) ffoorr kk11 ≠≠ kk22 WWhheenn tthhee nnuummbbeerr ooff ccoolllliissiioonnss iiss ssuuffffiicciieennttllyy ssmmaallll,, tthhee hhaasshh ttaabblleess wwoorrkk qquuiittee wweellll ((ffaasstt))  SSeevveerraall ccoolllliissiioonnss rreessoolluuttiioonn ssttrraatteeggiieess eexxiisstt CChhaaiinniinngg iinn aa lliisstt UUssiinngg tthhee nneeiigghhbboorriinngg sslloottss ((lliinneeaarr pprroobbiinngg)) RRee--hhaasshhiinngg ...... 10
  • 11. CCoolllliissiioonn RReessoolluuttiioonn:: CChhaaiinniinngg hh((""PPeesshhoo"")) == 44 hh((""KKiirroo"")) == 22 hh((""MMiimmii"")) == 11 hh((""IIvvaann"")) == 22 hh((""LLiillii"")) == mm--11 0 1 2 3 4 … m-1 Kiro Ivan null Mimi null Lili null Pesho null ccoolllliissiioonn CChhaaiinniinngg eelleemmeennttss iinn ccaassee ooff ccoolllliissiioonn nnuullll …… …… nnuullll …… …… …… T 11
  • 12. HHaasshh TTaabblleess aanndd EEffffiicciieennccyy HHaasshh ttaabblleess aarree tthhee mmoosstt eeffffiicciieenntt iimmpplleemmeennttaattiioonn ooff AADDTT ""ddiiccttiioonnaarryy"" AAdddd // FFiinndd // DDeelleettee ttaakkee jjuusstt ffeeww pprriimmiittiivvee ooppeerraattiioonnss SSppeeeedd ddooeess nnoott ddeeppeenndd oonn tthhee ssiizzee ooff tthhee hhaasshh-- ttaabbllee ((ccoonnssttaanntt ttiimmee)) EExxaammppllee:: ffiinnddiinngg aann eelleemmeenntt iinn aa hhaasshh--ttaabbllee wwiitthh 11 000000 000000 eelleemmeennttss,, ttaakkeess jjuusstt ffeeww sstteeppss FFiinnddiinngg aann eelleemmeenntt iinn aarrrraayy ooff 11 000000 000000 eelleemmeennttss ttaakkeess aavveerraaggee 50000 000000 sstteeppss 12
  • 13. Dictionaries –– IInntteerrffaacceess aanndd IImmpplleemmeennttaattiioonnss 13
  • 14. HHaasshh TTaabblleess iinn CC## TThhee DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> CCllaassss
  • 15. DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>>  IImmpplleemmeennttss tthhee AADDTT ddiiccttiioonnaarryy aass hhaasshh ttaabbllee  SSiizzee iiss ddyynnaammiiccaallllyy iinnccrreeaasseedd aass nneeeeddeedd  CCoonnttaaiinnss aa ccoolllleeccttiioonn ooff kkeeyy--vvaalluuee ppaaiirrss  CCoolllliissiioonnss aarree rreessoollvveedd bbyy cchhaaiinniinngg  EElleemmeennttss hhaavvee aallmmoosstt rraannddoomm oorrddeerr  OOrrddeerreedd bbyy tthhee hhaasshh ccooddee ooff tthhee kkeeyy  DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> rreelliieess oonn  OObbjjeecctt..EEqquuaallss(()) –– ffoorr ccoommppaarriinngg tthhee kkeeyyss  OObbjjeecctt..GGeettHHaasshhCCooddee(()) –– ffoorr ccaallccuullaattiinngg tthhee hhaasshh ccooddeess ooff tthhee kkeeyyss 15
  • 16. DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> ((22)) MMaajjoorr ooppeerraattiioonnss::  AAdddd((TTKKeeyy,,TTVVaalluuee)) –– aaddddss aann eelleemmeenntt wwiitthh tthhee ssppeecciiffiieedd kkeeyy aanndd vvaalluuee  RReemmoovvee((TTKKeeyy)) –– rreemmoovveess tthhee eelleemmeenntt bbyy kkeeyy  tthhiiss[[]] –– ggeett//aadddd//rreeppllaaccee ooff eelleemmeenntt bbyy kkeeyy  CClleeaarr(()) –– rreemmoovveess aallll eelleemmeennttss  CCoouunntt –– rreettuurrnnss tthhee nnuummbbeerr ooff eelleemmeennttss  KKeeyyss –– rreettuurrnnss aa ccoolllleeccttiioonn ooff tthhee kkeeyyss VVaalluueess –– rreettuurrnnss aa ccoolllleeccttiioonn ooff tthhee vvaalluueess 16
  • 17. DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> ((33))  MMaajjoorr ooppeerraattiioonnss::  CCoonnttaaiinnssKKeeyy((TTKKeeyy)) –– cchheecckkss wwhheetthheerr tthhee ddiiccttiioonnaarryy ccoonnttaaiinnss ggiivveenn kkeeyy  CCoonnttaaiinnssVVaalluuee((TTVVaalluuee)) –– cchheecckkss wwhheetthheerr tthhee ddiiccttiioonnaarryy ccoonnttaaiinnss ggiivveenn vvaalluuee  WWaarrnniinngg:: ssllooww ooppeerraattiioonn!!  TTrryyGGeettVVaalluuee((TTKKeeyy,, oouutt TTVVaalluuee))  IIff tthhee kkeeyy iiss ffoouunndd,, rreettuurrnnss iitt iinn tthhee TTVVaalluuee  OOtthheerrwwiissee rreettuurrnnss ffaallssee 17
  • 18. DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> –– EExxaammppllee DDiiccttiioonnaarryy<<ssttrriinngg,, iinntt>> ssttuuddeennttssMMaarrkkss == nneeww DDiiccttiioonnaarryy<<ssttrriinngg,, iinntt>>(());; ssttuuddeennttssMMaarrkkss..AAdddd((""IIvvaann"",, 44));; ssttuuddeennttssMMaarrkkss..AAdddd((""PPeetteerr"",, 66));; ssttuuddeennttssMMaarrkkss..AAdddd((""MMaarriiaa"",, 66));; ssttuuddeennttssMMaarrkkss..AAdddd((""GGeeoorrggee"",, 55));; iinntt ppeetteerrMMaarrkk == ssttuuddeennttssMMaarrkkss[[""PPeetteerr""]];; CCoonnssoollee..WWrriitteeLLiinnee((""PPeetteerr''ss mmaarrkk:: {{00}}"",, ppeetteerrMMaarrkk));; CCoonnssoollee..WWrriitteeLLiinnee((""IIss PPeetteerr iinn tthhee hhaasshh ttaabbllee:: {{00}}"",, ssttuuddeennttssMMaarrkkss..CCoonnttaaiinnssKKeeyy((""PPeetteerr""))));; CCoonnssoollee..WWrriitteeLLiinnee((""SSttuuddeennttss aanndd ggrraaddeess::""));; ffoorreeaacchh ((vvaarr ppaaiirr iinn ssttuuddeennttssMMaarrkkss)) {{ CCoonnssoollee..WWrriitteeLLiinnee((""{{00}} ---->> {{11}}"",, ppaaiirr..KKeeyy,, ppaaiirr..VVaalluuee));; }} 18
  • 20. CCoouunnttiinngg tthhee WWoorrddss iinn aa TTeexxtt ssttrriinngg tteexxtt == ""aa tteexxtt,, ssoommee tteexxtt,, jjuusstt ssoommee tteexxtt"";; IIDDiiccttiioonnaarryy<<ssttrriinngg,, iinntt>> wwoorrddssCCoouunntt == nneeww DDiiccttiioonnaarryy<<ssttrriinngg,, iinntt>>(());; ssttrriinngg[[]] wwoorrddss == tteexxtt..SSpplliitt(('' '',, '',,'',, ''..''));; ffoorreeaacchh ((ssttrriinngg wwoorrdd iinn wwoorrddss)) {{ iinntt ccoouunntt == 11;; iiff ((wwoorrddssCCoouunntt..CCoonnttaaiinnssKKeeyy((wwoorrdd)))) ccoouunntt == wwoorrddssCCoouunntt[[wwoorrdd]] ++ 11;; wwoorrddssCCoouunntt[[wwoorrdd]] == ccoouunntt;; }} ffoorreeaacchh((vvaarr ppaaiirr iinn wwoorrddssCCoouunntt)) {{ CCoonnssoollee..WWrriitteeLLiinnee((""{{00}} -->> {{11}}"",, ppaaiirr..KKeeyy,, ppaaiirr..VVaalluuee));; }} 20
  • 21. BBaallaanncceedd TTrreeee DDiiccttiioonnaarriieess TThhee SSoorrtteeddDDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> CCllaassss
  • 22. SSoorrtteeddDDiiccttiioonnaarryy <<TTKKeeyy,,TTVVaalluuee>>  SSoorrtteeddDDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> iimmpplleemmeennttss tthhee AADDTT ""ddiiccttiioonnaarryy"" aass sseellff-- bbaallaanncciinngg sseeaarrcchh ttrreeee EElleemmeennttss aarree aarrrraannggeedd iinn tthhee ttrreeee oorrddeerreedd bbyy kkeeyy TTrraavveerrssiinngg tthhee ttrreeee rreettuurrnnss tthhee eelleemmeennttss iinn iinnccrreeaassiinngg oorrddeerr AAdddd // FFiinndd // DDeelleettee ppeerrffoorrmm lloogg22((nn)) ooppeerraattiioonnss UUssee SSoorrtteeddDDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> wwhheenn yyoouu nneeeedd tthhee eelleemmeennttss ssoorrtteedd OOtthheerrwwiissee uussee DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> –– iitt hhaass bbeetttteerr ppeerrffoorrmmaannccee 22
  • 23. CCoouunnttiinngg WWoorrddss ((AAggaaiinn)) ssttrriinngg tteexxtt == ""aa tteexxtt,, ssoommee tteexxtt,, jjuusstt ssoommee tteexxtt"";; IIDDiiccttiioonnaarryy<<ssttrriinngg,, iinntt>> wwoorrddssCCoouunntt == nneeww SSoorrtteeddDDiiccttiioonnaarryy<<ssttrriinngg,, iinntt>>(());; ssttrriinngg[[]] wwoorrddss == tteexxtt..SSpplliitt((' ',, ',,',, '..'));; ffoorreeaacchh ((ssttrriinngg wwoorrdd iinn wwoorrddss)) {{ iinntt ccoouunntt == 11;; iiff ((wwoorrddssCCoouunntt..CCoonnttaaiinnssKKeeyy((wwoorrdd)))) ccoouunntt == wwoorrddssCCoouunntt[[wwoorrdd]] ++ 11;; wwoorrddssCCoouunntt[[wwoorrdd]] == ccoouunntt;; }} ffoorreeaacchh((vvaarr ppaaiirr iinn wwoorrddssCCoouunntt)) {{ CCoonnssoollee..WWrriitteeLLiinnee((""{{00}} -->> {{11}}"",, ppaaiirr..KKeeyy,, ppaaiirr..VVaalluuee));; }} 23
  • 24. CCoommppaarriinngg DDiiccttiioonnaarryy KKeeyyss UUssiinngg ccuussttoomm kkeeyy ccllaasssseess iinn DDiiccttiioonnaarryy<<TTKKeeyy,, TTVVaalluuee>> aanndd SSoorrtteeddDDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>>
  • 25. IICCoommppaarraabbllee<<TT>>  DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> rreelliieess oonn  OObbjjeecctt..EEqquuaallss(()) –– ffoorr ccoommppaarriinngg tthhee kkeeyyss  OObbjjeecctt..GGeettHHaasshhCCooddee(()) –– ffoorr ccaallccuullaattiinngg tthhee hhaasshh ccooddeess ooff tthhee kkeeyyss  SSoorrtteeddDDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>> rreelliieess oonn IICCoommppaarraabbllee<<TT>> ffoorr oorrddeerriinngg tthhee kkeeyyss  BBuuiilltt--iinn ttyyppeess lliikkee iinntt,, lloonngg,, ffllooaatt,, ssttrriinngg aanndd DDaatteeTTiimmee aallrreeaaddyy iimmpplleemmeenntt EEqquuaallss(()),, GGeettHHaasshhCCooddee(()) aanndd IICCoommppaarraabbllee<<TT>>  OOtthheerr ttyyppeess uusseedd wwhheenn uusseedd aass ddiiccttiioonnaarryy kkeeyyss sshhoouulldd pprroovviiddee ccuussttoomm iimmpplleemmeennttaattiioonnss 25
  • 26. IImmpplleemmeennttiinngg EEqquuaallss(()) aanndd GGeettHHaasshhCCooddee(()) 26 ppuubblliicc ssttrruucctt PPooiinntt {{ ppuubblliicc iinntt XX {{ ggeett;; sseett;; }} ppuubblliicc iinntt YY {{ ggeett;; sseett;; }} ppuubblliicc oovveerrrriiddee bbooooll EEqquuaallss((OObbjjeecctt oobbjj)) {{ iiff ((!!((oobbjj iiss PPooiinntt)) |||| ((oobbjj ==== nnuullll)))) rreettuurrnn ffaallssee;; PPooiinntt pp == ((PPooiinntt))oobbjj;; rreettuurrnn ((XX ==== pp..XX)) &&&& ((YY ==== pp..YY));; }} ppuubblliicc oovveerrrriiddee iinntt GGeettHHaasshhCCooddee(()) {{ rreettuurrnn ((XX <<<< 1166 || XX >>>> 1166)) ^^ YY;; }} }}
  • 27. IImmpplleemmeennttiinngg IICCoommppaarraabbllee<<TT>> 27 ppuubblliicc ssttrruucctt PPooiinntt :: IICCoommppaarraabbllee<<PPooiinntt>> {{ ppuubblliicc iinntt XX {{ ggeett;; sseett;; }} ppuubblliicc iinntt YY {{ ggeett;; sseett;; }} ppuubblliicc iinntt CCoommppaarreeTToo((PPooiinntt ootthheerrPPooiinntt)) {{ iiff ((XX !!== ootthheerrPPooiinntt..XX)) {{ rreettuurrnn tthhiiss..XX..CCoommppaarreeTToo((ootthheerrPPooiinntt..XX));; }} eellssee {{ rreettuurrnn tthhiiss..YY..CCoommppaarreeTToo((ootthheerrPPooiinntt..YY));; }} }} }}
  • 28. SSeettss SSeettss ooff EElleemmeennttss
  • 29. SSeett aanndd BBaagg AADDTTss  TThhee aabbssttrraacctt ddaattaa ttyyppee ((AADDTT)) ""sseett"" kkeeeeppss aa sseett ooff eelleemmeennttss wwiitthh nnoo dduupplliiccaatteess  SSeettss wwiitthh dduupplliiccaatteess aarree aallssoo kknnoowwnn aass AADDTT ""bbaagg""  SSeett ooppeerraattiioonnss:: AAdddd((eelleemmeenntt)) CCoonnttaaiinnss((eelleemmeenntt))  ttrruuee // ffaallssee DDeelleettee((eelleemmeenntt)) UUnniioonn((sseett)) // IInntteerrsseecctt((sseett))  SSeettss ccaann bbee iimmpplleemmeenntteedd iinn sseevveerraall wwaayyss LLiisstt,, aarrrraayy,, hhaasshh ttaabbllee,, bbaallaanncceedd ttrreeee,, ...... 29
  • 30. SSeettss –– IInntteerrffaacceess aanndd IImmpplleemmeennttaattiioonnss 30
  • 31. HHaasshhSSeett<<TT>>  HHaasshhSSeett<<TT>> iimmpplleemmeennttss AADDTT sseett bbyy hhaasshh ttaabbllee EElleemmeennttss aarree iinn nnoo ppaarrttiiccuullaarr oorrddeerr  AAllll mmaajjoorr ooppeerraattiioonnss aarree ffaasstt:: AAdddd((eelleemmeenntt)) –– aappppeennddss aann eelleemmeenntt ttoo tthhee sseett DDooeess nnootthhiinngg iiff tthhee eelleemmeenntt aallrreeaaddyy eexxiissttss RReemmoovvee((eelleemmeenntt)) –– rreemmoovveess ggiivveenn eelleemmeenntt CCoouunntt –– rreettuurrnnss tthhee nnuummbbeerr ooff eelleemmeennttss UUnniioonnWWiitthh((sseett)) // IInntteerrsseeccttWWiitthh((sseett)) –– ppeerrffoorrmmss uunniioonn // iinntteerrsseeccttiioonn wwiitthh aannootthheerr sseett 31
  • 32. HHaasshhSSeett<<TT>> –– EExxaammppllee 32 IISSeett<<ssttrriinngg>> ffiirrssttSSeett == nneeww HHaasshhSSeett<<ssttrriinngg>>(( nneeww ssttrriinngg[[]] {{ ""SSQQLL"",, ""JJaavvaa"",, ""CC##"",, ""PPHHPP"" }}));; IISSeett<<ssttrriinngg>> sseeccoonnddSSeett == nneeww HHaasshhSSeett<<ssttrriinngg>>(( nneeww ssttrriinngg[[]] {{ ""OOrraaccllee"",, ""SSQQLL"",, ""MMyySSQQLL"" }}));; IISSeett<<ssttrriinngg>> uunniioonn == nneeww HHaasshhSSeett<<ssttrriinngg>>((ffiirrssttSSeett));; uunniioonn..UUnniioonnWWiitthh((sseeccoonnddSSeett));; PPrriinnttSSeett((uunniioonn));; //// SSQQLL JJaavvaa CC## PPHHPP OOrraaccllee MMyySSQQLL pprriivvaattee ssttaattiicc vvooiidd PPrriinnttSSeett<<TT>>((IISSeett<<TT>> sseett)) {{ ffoorreeaacchh ((vvaarr eelleemmeenntt iinn sseett)) {{ CCoonnssoollee..WWrriittee((""{{00}} "",, eelleemmeenntt));; }} CCoonnssoollee..WWrriitteeLLiinnee(());; }}
  • 33. SSoorrtteeddSSeett<<TT>>  SSoorrtteeddSSeett<<TT>> iimmpplleemmeennttss AADDTT sseett bbyy bbaallaanncceedd sseeaarrcchh ttrreeee EElleemmeennttss aarree ssoorrtteedd iinn iinnccrreeaassiinngg oorrddeerr  EExxaammppllee:: 33 IISSeett<<ssttrriinngg>> ffiirrssttSSeett == nneeww SSoorrtteeddSSeett<<ssttrriinngg>>(( nneeww ssttrriinngg[[]] {{ ""SSQQLL"",, ""JJaavvaa"",, ""CC##"",, ""PPHHPP"" }}));; IISSeett<<ssttrriinngg>> sseeccoonnddSSeett == nneeww SSoorrtteeddSSeett<<ssttrriinngg>>(( nneeww ssttrriinngg[[]] {{ ""OOrraaccllee"",, ""SSQQLL"",, ""MMyySSQQLL"" }}));; IISSeett<<ssttrriinngg>> uunniioonn == nneeww HHaasshhSSeett<<ssttrriinngg>>((ffiirrssttSSeett));; uunniioonn..UUnniioonnWWiitthh((sseeccoonnddSSeett));; PPrriinnttSSeett((uunniioonn));; //// CC## JJaavvaa PPHHPP SSQQLL MMyySSQQLL OOrraaccllee
  • 35. SSuummmmaarryy  DDiiccttiioonnaarriieess mmaapp kkeeyy ttoo vvaalluuee CCaann bbee iimmpplleemmeenntteedd aass hhaasshh ttaabbllee oorr bbaallaanncceedd sseeaarrcchh ttrreeee  HHaasshh--ttaabblleess mmaapp kkeeyyss ttoo vvaalluueess RReellyy oonn hhaasshh--ffuunnccttiioonnss ttoo ddiissttrriibbuuttee tthhee kkeeyyss iinn tthhee ttaabbllee CCoolllliissiioonnss nneeeeddss rreessoolluuttiioonn aallggoorriitthhmm ((ee..gg.. cchhaaiinniinngg)) VVeerryy ffaasstt aadddd // ffiinndd // ddeelleettee  SSeettss hhoolldd aa ggrroouupp ooff eelleemmeennttss HHaasshh--ttaabbllee oorr bbaallaanncceedd ttrreeee iimmpplleemmeennttaattiioonnss 35
  • 36. HHaasshh TTaabblleess aanndd SSeettss QQuueessttiioonnss?? http://academy.telerik.com
  • 37. EExxeerrcciisseess 11.. WWrriittee aa pprrooggrraamm tthhaatt ccoouunnttss iinn aa ggiivveenn aarrrraayy ooff iinntteeggeerrss tthhee nnuummbbeerr ooff ooccccuurrrreenncceess ooff eeaacchh iinntteeggeerr.. UUssee DDiiccttiioonnaarryy<<TTKKeeyy,,TTVVaalluuee>>.. EExxaammppllee:: aarrrraayy == {{33,, 44,, 44,, 22,, 33,, 33,, 44,, 33,, 22}} 22  22 ttiimmeess 33  44 ttiimmeess 44  33 ttiimmeess 11.. WWrriittee aa pprrooggrraamm tthhaatt eexxttrraaccttss ffrroomm aa ggiivveenn sseeqquueennccee ooff ssttrriinnggss aallll eelleemmeennttss tthhaatt pprreesseenntt iinn iitt oodddd nnuummbbeerr ooff ttiimmeess.. EExxaammppllee:: {{CC##,, SSQQLL,, PPHHPP,, PPHHPP,, SSQQLL,, SSQQLL }}  {{CC##,, SSQQLL}} 37
  • 38. EExxeerrcciisseess ((22)) 33.. WWrriittee aa pprrooggrraamm tthhaatt ccoouunnttss hhooww mmaannyy ttiimmeess eeaacchh wwoorrdd ffrroomm ggiivveenn tteexxtt ffiillee wwoorrddss..ttxxtt aappppeeaarrss iinn iitt.. TThhee cchhaarraacctteerr ccaassiinngg ddiiffffeerreenncceess sshhoouulldd bbee iiggnnoorreedd.. TThhee rreessuulltt wwoorrddss sshhoouulldd bbee oorrddeerreedd bbyy tthheeiirr nnuummbbeerr ooff ooccccuurrrreenncceess iinn tthhee tteexxtt.. EExxaammppllee:: iiss  22 tthhee  22 tthhiiss  33 tteexxtt  66 38 TThhiiss iiss tthhee TTEEXXTT.. TTeexxtt,, tteexxtt,, tteexxtt –– TTHHIISS TTEEXXTT!! IIss tthhiiss tthhee tteexxtt??
  • 39. EExxeerrcciisseess ((33)) 39 44.. IImmpplleemmeenntt tthhee ddaattaa ssttrruuccttuurree ""hhaasshh ttaabbllee"" iinn aa ccllaassss HHaasshhTTaabbllee<<KK,,TT>>.. KKeeeepp tthhee ddaattaa iinn aarrrraayy ooff lliissttss ooff kkeeyy-- vvaalluuee ppaaiirrss ((LLiinnkkeeddLLiisstt<<KKeeyyVVaalluueePPaaiirr<<KK,,TT>>>>[[]]) wwiitthh iinniittiiaall ccaappaacciittyy ooff 1166.. WWhheenn tthhee hhaasshh ttaabbllee llooaadd rruunnss oovveerr 7755%%,, ppeerrffoorrmm rreessiizziinngg ttoo 22 ttiimmeess llaarrggeerr ccaappaacciittyy.. IImmpplleemmeenntt tthhee ffoolllloowwiinngg mmeetthhooddss aanndd pprrooppeerrttiieess:: AAdddd((kkeeyy,, vvaalluuee)),, Fiinndd((kkeeyy))vvaalluuee,, RReemmoovvee(( kkeeyy)),, CCoouunntt,, CClleeaarr(()),, tthhiiss[[]],, KKeeyyss.. TTrryy ttoo mmaakkee tthhee hhaasshh ttaabbllee ttoo ssuuppppoorrtt iitteerraattiinngg oovveerr iittss eelleemmeennttss wwiitthh ffoorreeaacchh.. 55.. IImmpplleemmeenntt tthhee ddaattaa ssttrruuccttuurree ""sseett"" iinn aa ccllaassss HHaasshheeddSSeett<<TT>> uussiinngg yyoouurr ccllaassss HHaasshhTTaabbllee<<TT,,TT>> ttoo hhoolldd tthhee eelleemmeennttss.. IImmpplleemmeenntt aallll ssttaannddaarrdd sseett ooppeerraattiioonnss lliikkee AAdddd((TT)),, Fiinndd((TT)),, RReemmoovvee((TT)),, CCoouunntt,, CClleeaarr(()),, uunniioonn aanndd iinntteerrsseecctt..