|
@@ -0,0 +1,76 @@
|
|
|
+package migl.util;
|
|
|
+
|
|
|
+import java.util.Iterator;
|
|
|
+import java.util.NoSuchElementException;
|
|
|
+import java.util.function.Function;
|
|
|
+
|
|
|
+public class ConsEmptyList<E> implements ConsList<E> {
|
|
|
+
|
|
|
+ private final int size;
|
|
|
+
|
|
|
+ public ConsEmptyList() {
|
|
|
+ this.size = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Iterator<E> iterator() {
|
|
|
+ return new Iterator<E>() {
|
|
|
+ @Override
|
|
|
+ public boolean hasNext() {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public E next() {
|
|
|
+ throw new NoSuchElementException("Liste vide");
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ConsList<E> prepend(E e) {
|
|
|
+ return new ConsListImpl<>(e, this);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ConsList<E> append(E e) {
|
|
|
+ return new ConsListImpl<>(e, this);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean isEmpty() {
|
|
|
+ return this.size == 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public E car() {
|
|
|
+ throw new NoSuchElementException("Liste vide");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ConsList<E> cdr() {
|
|
|
+ return new ConsEmptyList<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int size() {
|
|
|
+ return this.size;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public <T> ConsList<T> map(Function<E, T> f) {
|
|
|
+ return new ConsEmptyList<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String toString() {
|
|
|
+ return "()";
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean equals(Object obj) {
|
|
|
+ //2 Liste vide sont toujours identiques
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|