This shows you the differences between two versions of the page.
poo:laboratoare:08 [2020/11/23 11:11] carmen.odubasteanu |
poo:laboratoare:08 [2022/11/24 13:08] (current) carmen.odubasteanu [ATENTIE! Se vor folosi tipuri generice in toate problemele!] |
||
---|---|---|---|
Line 6: | Line 6: | ||
=== Problema 1 === | === Problema 1 === | ||
- | Să se definească o clasă **generică**__Underlined Text__ **//ArrayMap//** pentru un dicționar realizat ca o colecție de obiecte **//ArrayMapEntry//** (colecția va fi obiect de tip **//ArrayList//**). Clasa **//ArrayMapEntry//** va implementa interfața **//Map.Entry//** și va avea următoarele metode: | + | Să se definească o clasă **__generică__** **//ArrayMap//** pentru un dicționar realizat ca o colecție de obiecte **//ArrayMapEntry//** (colecția va fi obiect de tip **//ArrayList//**). Clasa **//ArrayMapEntry//** va implementa interfața **//Map.Entry//** și va avea următoarele metode: |
<code java> | <code java> | ||
+ | public class ArrayMapEntry<K, V> implements Map.Entry<K, V> { | ||
+ | private K key; | ||
+ | private V value; | ||
+ | ...// constructor | ||
public K getKey(); | public K getKey(); | ||
public V getValue(); | public V getValue(); | ||
Line 15: | Line 19: | ||
public boolean equals(Object o); | public boolean equals(Object o); | ||
public int hashCode(); | public int hashCode(); | ||
+ | } | ||
</code> | </code> | ||
Line 20: | Line 25: | ||
<code java> | <code java> | ||
+ | public class ArrayMap<K, V> extends AbstractMap<K, V>{ | ||
+ | ... | ||
public Set entrySet(); | public Set entrySet(); | ||
public int size(); | public int size(); | ||
public V put(K key, V value); | public V put(K key, V value); | ||
+ | .... | ||
+ | } | ||
</code> | </code> | ||
Line 54: | Line 63: | ||
=== Problema 3 === | === Problema 3 === | ||
- | Definiți clasa **generică**__Underlined Text__ **//LinkedList//** care va implementa interfața **//Iterable//** și va modela o listă liniară simplu înlănțuită. | + | Definiți clasa **__generică__** **//LinkedList//** care va implementa interfața **//Iterable//** și va modela o listă liniară simplu înlănțuită: |
+ | class LinkedList<T> implements Iterable<T> | ||
În clasa **//LinkedList//** se vor defini: | În clasa **//LinkedList//** se vor defini: | ||
- | * o clasă internă privată statică **//Node//** care conține două referințe: una pentru valoarea pe care o reține nodul și una pentru nodul următor din listă; și doi constructori: unul cu doi parametri (valoarea și nodul următor) și unul cu un parametru (valoarea) - va atribui valoarea null nodului următor; | + | * o clasă **//generica//** internă privată statică **//Node//** |
+ | <code> private static class Node<T> </code> | ||
+ | care conține două referințe: una pentru valoarea pe care o reține nodul și una pentru nodul următor din listă; și doi constructori: unul cu doi parametri (valoarea și nodul următor) și unul cu un parametru (valoarea) - va atribui valoarea null nodului următor; | ||
* două elemente de tip **//Node//**, reprezentând primul și respectiv ultimul element din listă; | * două elemente de tip **//Node//**, reprezentând primul și respectiv ultimul element din listă; | ||
- | * o clasă internă **//ListIterator//** ce va implementa interfața **//Iterator//**; | + | * o clasă internă **//ListIterator//** ce va implementa interfața generica **//Iterator//**; |
* metodele prezentate în blocul de cod de mai jos. | * metodele prezentate în blocul de cod de mai jos. | ||
Line 67: | Line 79: | ||
//Insereaza un nod la sfarsitul listei | //Insereaza un nod la sfarsitul listei | ||
public void add(T data); | public void add(T data); | ||
- | //Returneaza primul nod din lista | ||
- | public T getNode(); | ||
//Returneaza un obiect de tip ListIterator | //Returneaza un obiect de tip ListIterator | ||
public Iterator<T> iterator(); | public Iterator<T> iterator(); |