Documente Academic
Documente Profesional
Documente Cultură
Interfaa Map Metodele caracteristice ale Map Pericolele modificrii cheilor Prevenirea alterrii cheii Modificarea copiei !hei nemodifica"ile Pro#$%uri nemodifica"ile pentru chei &n'hearea cheilor !omparare (i sortare Interfaa !ompara"le Interfaa !omparator Set%uri sortate Stive) !o*i
Interfaa Map
,eali*ea* maparea ntre un set de chei (i un set de valori - perechi de tip (.e$/ value)
0ste n esen un instrument de tip 1loo.up2 !heile tre"uie s fie unice/ ns valorile nu
+
Map nu suport boolean add (!eva c)5 boolean contains (6"7ect o"7)5 &ns suport boolean put (8ip!heie .e$/ 8ipValue val)5 boolean contains9e$ (8ip!heie .e$)5 boolean containsValue (8ipValue val)5
3
.e$Set() % returnea* un Set cu toate cheile values() % returnea* o !ollection cu toate valorile entr$Set() % returne* un set de perechi (.e$/value) fiecare pereche este un o"iect Map)0ntr$ Map)0ntr$ suport 'et9e$/ 'etValue/ setValue orice schim"are n Map se reflect n Set
D
Holosire incorect
Iame daniela = new Iame (?Daniela?/ ?!or"oteanu?)5 Map;Iame/ Strin'< catalo' = new >ashMap;Iame/ Strin'< ()5 catalo')put (daniela/ ?JG:J%1+3%:DA?)5 S$stem)out)println (catalo')'et (daniela))5 daniela)first = ?Ionel?5 S$stem)out)println (catalo')'et (daniela))5 catalo')put (new Iame (?Daniela?/ ?!or"oteanu?)/ ?JG:J%DDD%1+3?)5 daniela)first = ?Daniela?5 S$stem)out)println (catalo')'et (daniela))5 G
Dou rspunsuri
,spunsul corect CC JG:J%1+3%:DA/ null/ JG:J%DDD%1+3 ,spunsul (i mai corect Iu contea* pentru c nu ar tre"ui s facem acest lucru !omportare impredicti"l
B
Dorim s putem modifica un o"iect din Map Dar o"iectele cu chei modifica"ile sunt periculoase
!opierea cheii
Iame daniela = new Iame (1Daniela2/ 1!or"oteanu2)5 Iame cop$ = new Iame (daniela)first/ daniela)last)5 map)put (cop$/ 1JG:J%DDD%1+32)5
4cum schim"rile n o"iectul daniela nu *pcesc map%ul Dar cheile n sine tot pot fi modificate for (Iame name map).e$Set ()) L name)first = 1 am "u(it cheia25 CC n%am re*olvat nimic M 1J
Ioiunea de pro#$
1Pn pro#$/ n forma sa cea mai 'eneral/ este o clas funcionnd ca o interfa ctre altceva) 4cel altceva poate fi orice o cone#iune de reea/ un o"iect de dimensiune mare n memorie/ un fi(ier sau orice alt resurs care este scump de folosit sau imposi"il de duplicat)2 (Qi.ipedia)
13
1&n'hearea2 cheilor
public class Iame L private Strin' first5 private Strin' last5 private boolean fro*en = false5 CC R public void setHirst (Strin' s) L if (Sfro*en) first = s5 M CC R la fel pentru setTast public void free*e () L fro*en = true5 M M CC nemodifica"ile din afara clasei
1:
1D
!omparare (i sortare
Holosite pentru a decide/ ntre dou o"iecte/ dac unul este mai mare decEt cellalt
(a)compare8o (")) tre"uie s 'enere*e ; J dac a ; " = J dac a = " < J dac a < "
1A
0#emplu de comparare
Inte'er one = 15 S$stem)out)println (one)compare8o (3))5 S$stem)out)println (one)compare8o (%DJ))5 Strin' fran. = 1Hran.25 S$stem)out)println (fran.)compare8o (1Uooth2))5 S$stem)out)println (fran.)compare8o (1>opper2))5 CC %1/ 1/ :/ %+
1G
Sortarea alfa"etic
Tist;Strin'< names = new 4rra$Tist;Strin'< ()5 names)add (1Sailor2)5 names)add (1Tula2)5 names)add (1Uo""$2)5 names)add (1Santos2)5 names)add (1Dell2)5 !ollections)sort (names)5 CC names V 1Uo""$2/ 1Dell2/ 1Tula2/ 1Sailor2/ 1Santos2 W
1B
Interfaa !ompara"le
Putem compara Strin'%uri pentru c ele implementea* interfaa !ompara"le
Pentru a face clasa Ceva compara"il/ tre"uie s implementm int compare8o (Ceva c)5
1@
Interfaa !omparator
Pentru a crea mai multe ordini de sortare pentru un anumit tip/ vom defini clase !omparator
Pentru tipul Ceva/ un !omparator;Ceva< are int compare (Ceva o1/ Ceva o+)5
++
0#emplu de !omparator
Tist;Iame< names = new 4rra$Tist;Iame< ()5 CC )) !omparator;Iame< first = new HirstIameHirst ()5 !ollections)sort (names/ first)5 S$stem)out)println (names)5 CC V Diane Tadd/ Dirt$ Xlover/ >arr$ Stanton/ Taura Dern/ CC Iicolas !a'e/ Qilliam Mor'an W
Seturi sortate
8reeSet - o colecie de o"iecte meninut mereu sortat Hie 6"7ect%urile din 8reeSet tre"uie s implemente*e !ompara"le Sau se furni*ea* un o"iect !omparator la crearea lui 8reeSet
SortedSet;Iame< names = new 8reeSet;Iame< (new HirstIameHirst ())5 names)add (new Iame (?Taura?/ ?Dern?))5 names)add (new Iame (?>arr$?/ ?Stanton?))5 names)add (new Iame (?Diane?/ ?Tadd?))5 S$stem)out)println(names)5 CC V Diane Tadd/ >arr$ Stanton/ Taura DernW
+D
Stiv (stac.)
Structur de date "a*at pe principiul TIH6 (Tast In Hirst 6ut)/ n care accesul la elemente se face numai pe la un sin'ur capt denumit vErf
!lasa Stac.
Implementea* interfaa !ollection Metodele clasei Stac.;E< boolean empt$ () E pee. () % inspectea* fr (ter'ere E pop () % scoatere cu (ter'ere E push (0 e) % introducere int search (6"7ect o) - adEncimea lui o n stiv Se arunc 0mpt$Stac.0#ception dac se face pop sau peek pe o stiv 'oal
+G
!oad (Fueue)
6 colecie de elemente a(e*ate n ordine pentru care adu'area se face ntotdeauna la sfEr(it iar e#tra'erea se face de la nceput
!lasa Tin.edTist
Implementea* interfeele !ollection (i Yueue Metodele interfeei Yueue;0< boolean add (0 e) - adu'are la sfEr(it 0 element () % inspecarea nceputului boolean offer (0 e) - adu'are fr aruncare e#cepie 0 pee. () % inspectare fr aruncare e#cepie 0 poll () % o"inerea captului/ fr aruncare e#cepie 0 remove () % (ter'erea captului Se arunc IoSuch0lement0#ception dac coada este 'oal (i se ncearc e#tra'erea unui element din ea (element/ peek/ remove)
3J
Pn palindrom
Strin' line = ?copac?5 Stac.;!haracter< sc = new Stac.;!haracter< ()5 Tin.edTist;!haracter< llc = new Tin.edTist;!haracter< ()5 for (int i = J 5 i ; line)len'th () 5 i OO) L sc)push (line)char4t (i))5 llc)add (line)char4t(i))5 M Strin' palindrom = new Strin' ()5 while (llc)si*e() < J) palindrom O= llc)remove ()5 while (sc)si*e () < J) palindrom O= sc)pop ()5 S$stem)out)println (palindrom)5 CC 1copaccapoc2
31