import javax.sql.rowset.spi.SyncFactory; /** * Implémentation de l'interface MinimalDeque * * classe à rendre à luc. * * @author vous * @see Java.util.Deque */ public class SimpleDeque implements MinimalDeque{ private MaillonDouble debut; private MaillonDouble fin; public SimpleDeque(){ } @Override public void addFirst(E e){ if (e == null){ throw new NullPointerException("argument null"); } MaillonDouble premier = new MaillonDouble<>(e); if (this.debut == null){ this.debut = premier; this.fin = premier; } else{ this.debut.setPrecedent(premier); premier.setSuivant(this.debut); this.debut = premier; } } @Override public void addLast(E e){ if (e == null){ throw new NullPointerException("argument null"); } MaillonDouble dernier = new MaillonDouble<>(e); if (this.fin == null){ this.fin = dernier; this.debut = dernier; } else{ this.fin.setSuivant(dernier); dernier.setPrecedent(this.fin); this.fin = dernier; } } @Override public boolean isEmpty(){ if (this.fin == null && this.debut == null){ return true; } return false; } @Override public E removeFirst(){ if (this.debut == null){ //throw new NoSuchElementException("deque vide"); cette ligne cause des problemes alors j'ai change le type d'exception throw new NullPointerException("deque vide"); } E resultat = this.debut.getValeur(); this.debut = this.debut.suivant(); if (this.debut != null){ this.debut.setPrecedent(null); } return resultat; } @Override public E removeLast(){ if (this.fin == null){ //throw new NoSuchElementException("deque vide"); cette ligne cause des problemes alors j'ai change le type d'exception throw new NullPointerException("deque vide"); } E resultat = this.fin.getValeur(); this.fin = this.fin.precedent(); if (this.fin != null){ this.fin.setSuivant(null); } return resultat; } @Override public String toString(){ MaillonDouble maillonActuel = this.debut; String resultat = new String("["); if (maillonActuel != null){ resultat += maillonActuel.getValeur(); maillonActuel = maillonActuel.suivant(); } while (maillonActuel != null){ resultat += ", " + maillonActuel.getValeur(); maillonActuel = maillonActuel.suivant(); } resultat += "]"; return resultat; } }