Ciao a tutti avrei un piccolo favore da chiedervi..
Questa la consegna "Si richiede di progettare, realizzare e documentare il tipo di dato astratto ElasticSet<E>. ElasticSet è una collezione di oggetti omogenei generici in cui non sono presenti elementi duplicati. L'astrazione ElasticSet<E>, oltre ai metodi standard di Set<E> quali boolean add(E e), boolean remove(E e) boolean contains(E e) e boolean isEmpty(), include i metodi descritti dalla seguente tabella" [...]
A parte i vari metodi che devo implementare, il mio dubbio è come fare l'implementazione del tipo stesso.
Io ho fatto come segue, ma non ho ben capito che valori può assumere il tipo generico E, poiché devo fare poi metodi che ad esempio restituiscono l'elemento massimo, ma non mi permette di applicare gli operatori > e < (sono nuovo nel mondo di Java, e una volta capite certe cose credo riuscirò ad implementare i vari metodi senza troppi problemi).
codice:
public abstract class ElasticSet<E> implements Set<E>{
// OVERVIEW: ElasticSet è una collezione di oggetti omogenei
// generici in cui non sono presenti elementi duplicati.
private Vector<E> elastic; //è giusto usare Vector o meglio ArrayList?
//costruttori
public ElasticSet()
{
//EFFECTS: inizializza this alla collezione vuota.
elastic = new Vector<E>();
}
Quando mi chiede ad esempio di implementare glb(E e) /* Restituisce il più grande elemento della collezione che è minore o uguale all'elemento e, e null se tale elemento non esiste */
io ho iniziato scrivendo questo, ma ovviamente non va perché non posso usare il "< e >" su <E>.
codice:
public E glb(E e)
{
//EFFECTS: (e=null) solleva NullPointerException, altrimenti restituisce il più grande
//della collezione che è minore o uguale all'elemento e (greatest lower bound).
//Se tale elemento non esiste, restituisce null.
if(e==null) throw new NullPointerException("La collezione non esiste");
int max = 0;
for(int i =0; i<elastic.size(); i++)
{
if((elastic.get(i)> max)&&(elastic.get(i)<=e))
max = elastic.get(i);