Documente Academic
Documente Profesional
Documente Cultură
Java Curs 6
Java Curs 6
● Interfaţa Map
● Metodele caracteristice ale Map
● Modificarea copiei
● Chei nemodificabile
● Îngheţarea cheilor
● Comparare şi sortare
● Interfaţa Comparable
● Interfaţa Comparator
● Set-uri sortate
● Stive. Cozi
1
Interfaţa Map
● Map nu suportă:
● boolean add (Ceva c);
● Însă suportă:
● boolean put (TipCheie key, TipValue val);
3
Exemplu de folosire a lui Map
Map<String, String> dns = new HashMap<String, String> ();
dns.remove ("vega.unitbv.ro");
5
Pericolele modificării cheilor
6
Folosire incorectă
Name daniela = new Name ("Daniela", "Corboteanu");
Map<Name, String> catalog = new HashMap<Name, String> ();
catalog.put (daniela, "0740-123-456");
daniela.first = "Ionel";
● Răspunsul corect:
// 0740-123-456, null, 0740-555-123
acest lucru
● Comportare impredictiblă
8
Cum să prevenim modificarea cheii?
9
Copierea cheii
10
Facem cheile nemodificabile
public class Name {
public final String first;
public final String last;
public Name (String first, String last) {
this.first = first;
this.last = last;
}
public boolean equals (Object o) {
return (o instanceof Name &&
((Name) o).first.equals (this.first) &&
((Name) o).last.equals (this.last));
}
}
11
Proxy-uri nemodificabile pentru chei
12
Noţiunea de proxy
13
“Îngheţarea” cheilor
public class Name {
private String first; // nemodificabile din afara clasei
private String last;
private boolean frozen = false;
// …
15
Comparare şi sortare
● = 0 dacă a = b
16
Exemplu de comparare
Integer one = 1;
System.out.println (one.compareTo (3));
System.out.println (one.compareTo (-50));
// -1, 1, 4, -2
17
Sortarea alfabetică
Collections.sort (names);
// names: [ “Bobby”, “Dell”, “Lula”, “Sailor”, “Santos” ]
18
Interfaţa Comparable
19
Name-urile devin comparabile
20
Exemplu de listă sortată de Name-uri
List<Name> names = new ArrayList<Name> ();
names.add (new Name ("Nicolas", "Cage"));
names.add (new Name ("Laura", "Dern"));
names.add (new Name ("Harry", "Stanton"));
names.add (new Name ("Diane", "Ladd"));
names.add (new Name ("William", "Morgan"));
names.add (new Name (“Dirty”, "Glover"));
System.out.println (names);
Collections.sort (names);
System.out.println (names);
22
Un Comparator după prenume
23
Exemplu de Comparator
24
Seturi sortate
● TreeSet – o colecţie de obiecte menţinută mereu sortată
● Fie Object-urile din TreeSet trebuie să implementeze
Comparable
● Sau se furnizează un obiect Comparator la crearea lui
TreeSet
● Se scoate întotdeauna
elementul de deasupra
26
Clasa Stack
● boolean empty ()
● E push (E e) - introducere
System.out.println (reverse);
● Principiul FIFO
(First In
First Out)
remove add
29
Clasa LinkedList
● Implementează interfeţele Collection şi Queue
● Metodele interfeţei Queue<E>:
// “copaccapoc”
31