Sfoglia il codice sorgente

Ajout factory asList()

Arthur Brandao 6 anni fa
parent
commit
b03ad6420f
2 ha cambiato i file con 17 aggiunte e 1 eliminazioni
  1. 14 1
      src/migl/util/ConsListFactory.java
  2. 3 0
      src/migl/util/ConsListImpl.java

+ 14 - 1
src/migl/util/ConsListFactory.java

@@ -46,6 +46,19 @@ public final class ConsListFactory {
 	 */
 	@SafeVarargs
 	public static <T> ConsList<T> asList(T... ts) {
-		throw new UnsupportedOperationException();
+		//Si liste vide
+		if(ts.length == 0) {
+			return nil();
+		} 
+		//Si 1 element
+		else if(ts.length == 1) {
+			return singleton(ts[0]);
+		}
+		//Si +sieurs elements
+		 ConsList<T> list = new ConsListImpl<>(ts[ts.length - 1], null);
+		for(int i = ts.length - 2; i > -1; i--) {
+			list = list.prepend(ts[i]);
+		}
+		return list;
 	}
 }

+ 3 - 0
src/migl/util/ConsListImpl.java

@@ -24,6 +24,9 @@ public class ConsListImpl<E> extends Cons<E, ConsList<E>> implements ConsList<E>
 			private ConsList<E> current = ConsListImpl.this;
 			@Override
 			public boolean hasNext() {
+				if(current == null) {
+					return false;
+				}
 				return !current.isEmpty();
 			}