BUT2/DEV/DEV3.2/DEV32/2/MinimalDeque.java
2023-12-21 16:36:03 +01:00

69 lines
2.3 KiB
Java

/**
* interface simplifiée pour un Deque, c'est-à-dire une file d'attente à double extrémité
*
* Pour éviter la lourdeur de l'interface Deque de l'API officielle, celle-ci limite
* cette dernière à 5 méthodes essentielles.
*
* La spécification de ces méthodes est essentiellement identique à celle des méthodes équivalentes
* dans Deque.
*
* Ici nous choisissons d'interdire null comme élément et de ne pas limiter la capacité de la deque.
* Nous ignorons ClassCastException qui n'est a priori pas possible d'obtenir en runtime avec javac sans contorsion.
*
* The javadoc is reproduced and adapted from source for your convenience below in the file, but in english.
*
* Il est recommandé d'ajouter un constructeur sans argument qui instancie un deque vide.
* Il est utile de surcharger toString() pour permettre d'afficher utilement la structure de donnée.
* @author Luc Hernandez, Florent Madelaine.
* @See Java.util.Deque
*/
public interface MinimalDeque<E> {
/**
* Inserts the specified element at the front of this deque if it is
* possible to do so.
*
* @param e the element to add
* @throws NullPointerException if the specified element is null
* @throws IllegalArgumentException if some property of the specified
* element prevents it from being added to this deque
*/
void addFirst(E e);
/**
* Inserts the specified element at the end of this deque if it is
* possible to do so.
*
* @param e the element to add
* @throws NullPointerException if the specified element is null
* @throws IllegalArgumentException if some property of the specified
* element prevents it from being added to this deque
*/
void addLast(E e);
/**
* Returns <tt>true</tt> if this collection contains no elements.
*
* @return <tt>true</tt> if this collection contains no elements
*/
boolean isEmpty();
/**
* Retrieves and removes the first element of this deque.
*
* @return the head of this deque
* @throws NoSuchElementException if this deque is empty
*/
E removeFirst();
/**
* Retrieves and removes the last element of this deque.
*
* @return the tail of this deque
* @throws NoSuchElementException if this deque is empty
*/
E removeLast();
}