@NotNull @Override public ConsList<E> append(E elem) { java.util.List<E> current = new ArrayList<E>(); for (E e : this) { current.add(e); } ConsList<E> result = empty(); result = result.append(elem); for (int i = current.size() - 1; i >= 0; i--) { result = result.prepend(current.get(i)); } return result; }
@NotNull @SuppressWarnings("unchecked") public static <E> BuilderFactory<E, LinkedList<E>> factory() { return (BuilderFactory) ConsList.<E>factory(); }
@NotNull @Override public ConsList<E> range(int from, boolean fromInclusive, int to, boolean toInclusive) { from = fromInclusive ? from : from + 1; to = toInclusive ? to + 1 : to; return this.drop(from).take(to - from); }
@NotNull @Override public ConsList<E> take(int number) { java.util.List<E> top = new ArrayList<E>(Math.max(0, number)); ConsListIterator<E> iterator = (ConsListIterator<E>) iterator(); for (int count = 0; count < number && iterator.hasNext(); count++) { top.add(iterator.next()); } ConsList<E> result = empty(); for (int i = top.size() - 1; i >= 0; i--) { result = result.prepend(top.get(i)); } return result; }
@NotNull @Override public ConsList<E> take(int number) { java.util.List<E> top = new ArrayList<E>(Math.max(0, number)); ConsListIterator<E> iterator = (ConsListIterator<E>) iterator(); for (int count = 0; count < number && iterator.hasNext(); count++) { top.add(iterator.next()); } ConsList<E> result = empty(); for (int i = top.size() - 1; i >= 0; i--) { result = result.prepend(top.get(i)); } return result; }
@NotNull @SuppressWarnings("unchecked") public static <E> BuilderFactory<E, LinkedList<E>> factory() { return (BuilderFactory) ConsList.<E>factory(); }
@NotNull @Override public ConsList<E> append(E elem) { java.util.List<E> current = new ArrayList<E>(); for (E e : this) { current.add(e); } ConsList<E> result = empty(); result = result.append(elem); for (int i = current.size() - 1; i >= 0; i--) { result = result.prepend(current.get(i)); } return result; }
@NotNull @Override public ConsList<E> take(int number) { java.util.List<E> top = new ArrayList<E>(Math.max(0, number)); ConsListIterator<E> iterator = (ConsListIterator<E>) iterator(); for (int count = 0; count < number && iterator.hasNext(); count++) { top.add(iterator.next()); } ConsList<E> result = empty(); for (int i = top.size() - 1; i >= 0; i--) { result = result.prepend(top.get(i)); } return result; }
@NotNull @Override public ConsList<E> range(int from, boolean fromInclusive, int to, boolean toInclusive) { from = fromInclusive ? from : from + 1; to = toInclusive ? to + 1 : to; return this.drop(from).take(to - from); }
@NotNull @SuppressWarnings("unchecked") public static <E> BuilderFactory<E, LinkedList<E>> factory() { return (BuilderFactory) ConsList.<E>factory(); }
@NotNull @Override public ConsList<E> append(E elem) { java.util.List<E> current = new ArrayList<E>(); for (E e : this) { current.add(e); } ConsList<E> result = empty(); result = result.append(elem); for (int i = current.size() - 1; i >= 0; i--) { result = result.prepend(current.get(i)); } return result; }
@NotNull @Override public ConsList<E> set(int i, E elem) { // Copy everything up to the index we need to set java.util.List<E> before = new ArrayList<E>(i); ConsListIterator<E> iterator = (ConsListIterator<E>) iterator(); for (int count = 0; count < i && iterator.hasNext(); count++) { before.add(iterator.next()); } if (!iterator.hasNext()) { throw new IndexOutOfBoundsException(String.valueOf(i)); } iterator.next(); // Discard the current value ConsList<E> result = iterator.current; // Share the unmodified tail result = result.prepend(elem); // Set the new value // Add all the elements before the one we set back for (int index = before.size() - 1; index >= 0; index--) { result = result.prepend(before.get(index)); } return result; }
@NotNull @Override public ConsList<E> range(int from, boolean fromInclusive, int to, boolean toInclusive) { from = fromInclusive ? from : from + 1; to = toInclusive ? to + 1 : to; return this.drop(from).take(to - from); }
@NotNull public static <E> LinkedList<E> copyOf(Iterator<E> iterator) { Builder<E, ConsList<E>> builder = ConsList.<E>factory().newBuilder(); while (iterator.hasNext()) { builder.add(iterator.next()); } return builder.build(); }
@NotNull @Override public ConsList<E> set(int i, E elem) { // Copy everything up to the index we need to set java.util.List<E> before = new ArrayList<E>(i); ConsListIterator<E> iterator = (ConsListIterator<E>) iterator(); for (int count = 0; count < i && iterator.hasNext(); count++) { before.add(iterator.next()); } if (!iterator.hasNext()) { throw new IndexOutOfBoundsException(String.valueOf(i)); } iterator.next(); // Discard the current value ConsList<E> result = iterator.current; // Share the unmodified tail result = result.prepend(elem); // Set the new value // Add all the elements before the one we set back for (int index = before.size() - 1; index >= 0; index--) { result = result.prepend(before.get(index)); } return result; }
@NotNull public static <E> LinkedList<E> copyOf(Iterator<E> iterator) { Builder<E, ConsList<E>> builder = ConsList.<E>factory().newBuilder(); while (iterator.hasNext()) { builder.add(iterator.next()); } return builder.build(); }
@NotNull @Override public ConsList<E> set(int i, E elem) { // Copy everything up to the index we need to set java.util.List<E> before = new ArrayList<E>(i); ConsListIterator<E> iterator = (ConsListIterator<E>) iterator(); for (int count = 0; count < i && iterator.hasNext(); count++) { before.add(iterator.next()); } if (!iterator.hasNext()) { throw new IndexOutOfBoundsException(String.valueOf(i)); } iterator.next(); // Discard the current value ConsList<E> result = iterator.current; // Share the unmodified tail result = result.prepend(elem); // Set the new value // Add all the elements before the one we set back for (int index = before.size() - 1; index >= 0; index--) { result = result.prepend(before.get(index)); } return result; }
@NotNull public static <E> LinkedList<E> copyOf(Iterator<E> iterator) { Builder<E, ConsList<E>> builder = ConsList.<E>factory().newBuilder(); while (iterator.hasNext()) { builder.add(iterator.next()); } return builder.build(); }
@NotNull public static <E> LinkedList<E> copyOf(E[] es) { Builder<E, ConsList<E>> builder = ConsList.<E>factory().newBuilder(); for (E e : es) { builder.add(e); } return builder.build(); }
@NotNull public static <E> LinkedList<E> copyOf(java.lang.Iterable<E> iterable) { Builder<E, ConsList<E>> builder = ConsList.<E>factory().newBuilder(); for (E e : iterable) { builder.add(e); } return builder.build(); }