private static <T> IterableWithSize<T> withSizeTraversable(Iterable<? extends T> iterable) { if (iterable instanceof Collection) { return new IterableWithSize<>(iterable, ((Collection<?>) iterable).size()); } else { return new IterableWithSize<>(iterable, ((Traversable<?>) iterable).size()); } }
/** * Creates a Vector of the given elements. * <p> * The resulting vector has the same iteration order as the given iterable of elements * if the iteration order of the elements is stable. * * @param <T> Component type of the Vector. * @param iterable An Iterable of elements. * @return A vector containing the given elements in the same order. * @throws NullPointerException if {@code elements} is null */ @SuppressWarnings("unchecked") public static <T> Vector<T> ofAll(Iterable<? extends T> iterable) { Objects.requireNonNull(iterable, "iterable is null"); if (iterable instanceof Traversable && io.vavr.collection.Collections.isEmpty(iterable)){ return empty(); } if (iterable instanceof Vector) { return (Vector<T>) iterable; } final Object[] values = withSize(iterable).toArray(); return ofAll(BitMappedTrie.ofAll(values)); }
/** * Creates a Vector of the given elements. * <p> * The resulting vector has the same iteration order as the given iterable of elements * if the iteration order of the elements is stable. * * @param <T> Component type of the Vector. * @param iterable An Iterable of elements. * @return A vector containing the given elements in the same order. * @throws NullPointerException if {@code elements} is null */ @SuppressWarnings("unchecked") public static <T> Vector<T> ofAll(Iterable<? extends T> iterable) { Objects.requireNonNull(iterable, "iterable is null"); if (iterable instanceof Traversable && io.vavr.collection.Collections.isEmpty(iterable)){ return empty(); } if (iterable instanceof Vector) { return (Vector<T>) iterable; } final Object[] values = withSize(iterable).toArray(); return ofAll(BitMappedTrie.ofAll(values)); }
private static <T> IterableWithSize<T> withSizeTraversable(Iterable<? extends T> iterable) { if (iterable instanceof Collection) { return new IterableWithSize<>(iterable, ((Collection<?>) iterable).size()); } else { return new IterableWithSize<>(iterable, ((Traversable<?>) iterable).size()); } }
private static <T> Object[] toArray(Iterable<T> elements) { if (elements instanceof Array) { final Array<T> array = (Array<T>) elements; return array.delegate; } else { return io.vavr.collection.Collections.withSize(elements).toArray(); } } }
BitMappedTrie<T> prependAll(Iterable<? extends T> iterable) { final Collections.IterableWithSize<? extends T> iter = withSize(iterable); try { return prepend(iter.reverseIterator(), iter.size()); } catch (ClassCastException ignored) { return boxed().prepend(iter.reverseIterator(), iter.size()); } } private BitMappedTrie<T> prepend(java.util.Iterator<? extends T> iterator, int size) {
BitMappedTrie<T> appendAll(Iterable<? extends T> iterable) { final Collections.IterableWithSize<? extends T> iter = withSize(iterable); try { return append(iter.iterator(), iter.size()); } catch (ClassCastException ignored) { return boxed().append(iter.iterator(), iter.size()); } } private BitMappedTrie<T> append(java.util.Iterator<? extends T> iterator, int size) {
private static <T> Object[] toArray(Iterable<T> elements) { if (elements instanceof Array) { final Array<T> array = (Array<T>) elements; return array.delegate; } else { return io.vavr.collection.Collections.withSize(elements).toArray(); } } }
BitMappedTrie<T> appendAll(Iterable<? extends T> iterable) { final Collections.IterableWithSize<? extends T> iter = withSize(iterable); try { return append(iter.iterator(), iter.size()); } catch (ClassCastException ignored) { return boxed().append(iter.iterator(), iter.size()); } } private BitMappedTrie<T> append(java.util.Iterator<? extends T> iterator, int size) {
BitMappedTrie<T> prependAll(Iterable<? extends T> iterable) { final Collections.IterableWithSize<? extends T> iter = withSize(iterable); try { return prepend(iter.reverseIterator(), iter.size()); } catch (ClassCastException ignored) { return boxed().prepend(iter.reverseIterator(), iter.size()); } } private BitMappedTrie<T> prepend(java.util.Iterator<? extends T> iterator, int size) {