You are on page 1of 6

Poo Laboratoare1

Contents
Laborator7 1 Colect ii de obiecte n Java 1.1 Interfat a Iterator . . . . . . . . . . . . 1.2 Interfat a Collection . . . . . . . . . . 1.3 Interfat a Set . . . . . . . . . . . . . . 1.3.1 Clasele HashSet si TreeSet . . 1.4 Interfat a List . . . . . . . . . . . . . . 1.4.1 Clasele ArrayList si LinkedList 1.4.2 Interfat a ListIterator . . . . . . 1.5 Interfat a Map . . . . . . . . . . . . . 1.5.1 Clasele HashMap si TreeMap . 2 Probleme de laborator 2.1 Problema 1 . . . . 2.2 Problema 2 . . . . 2.3 Problema 3 . . . . 2.4 Problema 4 . . . . 2.5 Problema 5 . . . . 2.6 Problema 6 (bonus) 2.7 Problema 7 (bonus) 2 2 2 2 2 2 3 3 4 4 4 5 5 5 5 5 5 5 6

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

1 http://www.google.ro/

Laborator7
Programare Orientata pe Obiecte: Laborator 7

Colect ii de obiecte n Java

O colect ie este un grup de date manipulate ca un obiect de sine st at ator. Colect iile sunt denite printr-un set de interfet e si au suportul ntr-un set de clase care implementeaz a aceste interfet e.

1.1

Interfat a Iterator

permite selectarea ec arui element din colect ie Interface Iterator { boolean hasNext(); Object next(); void remove(); }

1.2

Interfat a Collection

public interface Collection { int size(); boolean isEmpty(); boolean contains(Object element); boolean add(Object element); // Optional boolean remove(Object element); // Optional Iterator iterator(); boolean containsAll(Collection c); boolean addAll(Collection c); // Optional boolean removeAll(Collection c); // Optional boolean retainAll(Collection c); // Optional void clear(); // Optional Object[] toArray(); Object[] toArray(Object a[]); }

1.3

Interfat a Set

corespunde denit iei matematice a unei mult imi (nu sunt acceptate elemente duplicate) n comparat ie cu interfat a Collection: interfat a este identic a ecare constructor trebuie s a creeze o colect ie f ar a duplicate metoda add() nu poate ad auga un element care se a a deja n mult ime 1.3.1 Clasele HashSet si TreeSet

implementeaz a interfat a Set clasa HashSet :

implementat a folosind un tabel de dispersie elementele nu sunt ordonate metodele add(), remove(), contains() au complexitate constant a n timp, O(c) clasa TreeSet : implementat a folosind un arbore garanteaz a ordonarea elementelor metodele add(), remove(), contains() au complexitate logaritmic a n timp, O(log n)

1.4

Interfat a List

corespunde unei grup ari cu indexare de elemente extensii fat a de interfat a Collection: acceseaz a elementele prin indec si, la fel ca un vector permite c autarea bazat a pe index a elementelor det ine un iterator specializat, numit ListIterator permite extragerea de subliste metoda add() adaug a la sf ar situl listei metoda remove() sterge de la nceputul listei public interface List extends Collection { Object get(int index); Object set(int index, Object element); // Optional void add(int index, Object element); // Optional Object remove(int index); // Optional abstract boolean addAll(int index, Collection c); int indexOf(Object o); int lastIndexOf(Object o); ListIterator listIterator(); ListIterator listIterator(int index); List subList(int from, int to); }

1.4.1

Clasele ArrayList si LinkedList

implementeaz a interfat a List clasa ArrayList : implementat a folosind un vector elementele pot accesate direct prin metodele get() si set() clasa LinkedList : implementat a folosind o list a dublu nl ant uit a metodele add() si remove() au o performant a mai bun a n comparat ie cu ArrayList metodele get() si set() au o performant a mai slab a n comparat ie cu ArrayList

1.4.2

Interfat a ListIterator

public interface ListIterator extends Iterator { boolean hasNext(); Object next(); boolean hasPrevious(); Object previous(); int nextIndex(); int previousIndex(); void remove(); // Optional void set(Object o); // Optional void add(Object o); // Optional }

1.5

Interfat a Map

corespunde unei grup ari de asocieri cheie-valoare poate referit a ca dict ionar sau tablou asociativ public interface Map { Object put(Object key, Object value); Object get(Object key); Object remove(Object key); boolean containsKey(Object key); boolean containsValue(Object value); int size(); boolean isEmpty(); void putAll(Map t); void clear(); public Set keySet(); public Collection values(); public Set entrySet(); public interface Entry { Object getKey(); Object getValue(); Object setValue(Object value); } }

1.5.1

Clasele HashMap si TreeMap

implementeaz a interfat a Map clasa HashMap : implementare bazat a pe un tabel de dispersie perechile cheie-valoare nu sunt ordonate clasa TreeMap : implementare bazat a pe arbori ro su-negru perechile cheie-valoare sunt ordonate pe baza cheii

2
2.1

Probleme de laborator
Problema 1

(2 puncte) S a se scrie un program pentru a sarea cuvintelor distincte dintr-un sier text folosind clasa TreeSet (precum si clasele RandomAccessFile si StringTokenizer sau metoda split() din clasa String ). Fi sierul va cont ine si cuvinte repetate (identice). Elementele mult imii se vor a sa n ordine cresc atoare si n ordine descresc atoare, f ar a a apela o funct ie de sortare, folosind dou a obiecte TreeSet construite diferit (cu si f ar a argument de tip Comparator ).

2.2

Problema 2

(2 puncte) S a se deneasc a o clas a ArraySet pentru o mult ime neordonat a de obiecte realizat a ca vector (extinde ArrayList ), care s a poat a nlocui o clas a TreeSet sau HashSet (adic a implementeaz a interfat a Set). Se vor redeni cele dou a metode de ad augare a unui obiect: boolean add (Object obj) void add (int i , Object obj) S a se foloseasc a clasa ArraySet n locul clasei TreeSet din programul anterior.

2.3

Problema 3

(2 puncte) S a se deneasc a o clas a LinkedSet pentru o mult ime realizat a ca list a nl ant uit a de elemente distincte. Clasa va implementa interfat a Set si va extinde clasa LinkedList. S a se scrie un program pentru crearea unei liste de obiecte Integer si a sarea ei cu si f ar a folosirea unui iterator.

2.4

Problema 4

(2 puncte) S a se deneasc a o clas a LinkedSet pentru o mult ime realizat a ca list a simplu nl ant uit a, ca o clas a derivat a din AbstractSet (se va deni si o clas a Node ). Se vor implementa metodele add, size, iterator, toString. Ad augarea de elemente se va face numai la sf ar situl listei.

2.5

Problema 5

(2 puncte) S a se deneasc a o clas a LinkList pentru o list a simplu nl ant uit a de variabile Object, ca o clas a derivat a din AbstractList (se va deni si o clasa Node). Se vor deni urm atoarele metode abstracte: int size() boolean add(Object) Object get (int) Object set (int, Object) S a se scrie un program pentru crearea, ordonarea (cu metoda Collections.sort()) si a sarea (cu iterator) a unei liste de siruri, ca obiect LinkList.

2.6

Problema 6 (bonus)

(1 punct) S a se deneasc a o clas a SLinkList pentru o list a simplu nl ant uit a ordonat a de variabile Object, ca o clas a derivat a din AbstractList. Fat a de clasa anterioar a se va ad auaga clasei o variabil a Comparator si un constructor cu argument Comparator. Se vor redeni metodele: boolean add(Object) // ad augare la lista ordonat a

int indexOf(Object) // c autare n lista ordonat a Object set(int, Object) // modicare si reordonare list a

2.7

Problema 7 (bonus)

(1 punct) S a se deneasc a o clas a SArraySet pentru o mult ime ordonat a de obiecte si care implementeaz a interfat a SortedSet (poate extinde ArrayList ). Metodele impuse de interfat a SortedSet sunt: Comparator comparator() // comparator folosit (null pentru comparat ia natural a) Object rst() // primul obiect din mult ime Object last() // ultimul element din mult ime SortedSet subset(Object from, Object to) // o submult ime ordonat a SortedSet headSet(Object to) // o submult ime cu primele obiecte SortedSet tailSet (Object from) // o submult ime cu ultimele obiecte S a se foloseasc a un obiect SArraySet n programul pentru a sarea cuvintelor distincte dintr-un text n ordine cresc atoare si descresc atoare. Se vor deni (cel put in) doi constructori: f ar a argumente si cu argument de tip Comparator.

You might also like