On 4/18/21 9:51 AM, Peter Levart wrote:
public interface Collection<E> .... {
default Collection<E> reversed() { return this; }
default void addFirst(E e) { throw new
UnsupportedOperationException(); }
default void addLast(E e) { throw new
UnsupportedOperationException(); }
default E getFirst() { return iterator().next(); }
default E getLast() { return iterator().next(); }
default E removeFirst() { var i = iterator(); i.next();
i.remove(); }
default E removeLast() { var i = iterator(); i.next();
i.remove(); }
}
List, SortedSet and Deque would of course override them with
implementations as proposed. Would anything be wrong with above
implementations?
Yeah, I forgot about the Queue. Would something like the following be
too much throwing?
public interface Queue<E> ... {
default Queue<E> reversed() { throw new
UnsupportedOperationException(); }
default void addFirst(E e) { throw new
UnsupportedOperationException(); }
default void addLast(E e) { add(e); }
default E getFirst() { return element(); }
default E getLast() { throw new UnsupportedOperationException(); }
default E removeFirst() { return remove(); }
default E removeLast() { throw new
UnsupportedOperationException(); }
}
Peter