Créez une classe
Paire<T>
contenant deux objets de même
type
T
et deux getters.
Vérifiez expérimentalement si
ClasseParametree<String>
hérite de
ClasseParametree<Object>
. Trouvez une
explication...
Reprenez la classe Pile et adaptez-le pour que la pile, implémentée avec des listes chaînées devienne un type paramétré.
Créez une classe
PaireOrdonnee<T extends Comparable<T>> extends Paire<T>
contenant deux méthodes
getPetit()
et
getGrand()
retournant
respectivement le plus petit des deux objets et le plus grand.
Créez une classe
PaireOrdonneeComparable<T extends Comparable<T>> extends PaireOrdonnee<T> implements Comparable<PaireOrdonnee<T>>
.
Vous comparerez deux paires ordonnées en comparant leurs plus grandes valeurs.
Iterable<T>
Modifiez la Pile pour qu’elle implémente
Iterable<T>
. Adaptez
la fonction
toString()
en conséquence.
Créez un
TreeSet<T>
, placez-y des
PaireOrdonneeComparable<Integer>
, et
parcourez-le en affichant ses valeurs.
Implémentez l’interface
Tableau creux
, l’itérateur implémenté
ne devra passer que par les éléments non nuls du tableau.
Votre itérateur retournera tous les éléments non
null
du tableau.
Dans une classe paramétrée en java, on ne peut pas instancier un tableau T[], vous êtes obligé de remplacer le tableau par une collection.
package collections.interfaces; public interface TableauCreux<T> extends Iterable<T> { public T get(int i); public void set(int i, T item); }
Map
Implémentez l’interface de l’exercice précédent avec une
Map
.
Créez une classe itérable permettant de représenter une matrice.
package collections.interfaces; public interface Matrice<T> extends Iterable<T> { public T get(int i, int j); public void set(int i, int j, T value); }
Créez une interface
Condition<U>
contenant une méthode
boolean check(U item)
.
Créez une classe filtre
Filtre<T, U>
contenant un
Condition<U>
et permettant de filtrer une sous-classe
T
de
Iterable<U>
. Créez une méthode
filtre(Collection<T> condition)
retournant un
itérable contenant tous les éléments de la
collection
qui vérifient
check
.