This shows you the differences between two versions of the page.
|
poo:laboratoare:08 [2020/11/23 11:12] carmen.odubasteanu |
poo:laboratoare:08 [2022/11/24 13:08] (current) carmen.odubasteanu [ATENTIE! Se vor folosi tipuri generice in toate problemele!] |
||
|---|---|---|---|
| Line 9: | Line 9: | ||
| <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ă__** **//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(); | ||