@Test public void shouldConvertToJavaStream() { final Value<Integer> value = of(1, 2, 3); final java.util.stream.Stream<Integer> s1 = value.toJavaStream(); if (value.isSingleValued()) { final java.util.stream.Stream<Integer> s2 = java.util.stream.Stream.of(1); assertThat(List.ofAll(s1::iterator)).isEqualTo(List.ofAll(s2::iterator)); } else { final java.util.stream.Stream<Integer> s2 = java.util.stream.Stream.of(1, 2, 3); assertThat(List.ofAll(s1::iterator)).isEqualTo(List.ofAll(s2::iterator)); } }
@Test public void shouldAcceptNavigableSet() { java.util.TreeSet<Integer> javaSet = new java.util.TreeSet<>(); javaSet.add(2); javaSet.add(1); assertThat(List.ofAll(javaSet)).isEqualTo(List.of(1, 2)); }
/** * Creates a Tree of the given elements. * * <p>If the given iterable is a tree, it is returned as result. if the iteration order of the * elements is stable. * * @param <T> Component type of the List. * @param iterable An Iterable of elements. * @return A list containing the given elements in the same order. * @throws NullPointerException if {@code elements} is null */ @SuppressWarnings("unchecked") static <T> Tree<T> ofAll(Iterable<? extends T> iterable) { Objects.requireNonNull(iterable, "iterable is null"); if (iterable instanceof Tree) { return (Tree<T>) iterable; } else { final List<T> list = List.ofAll(iterable); return list.isEmpty() ? Empty.instance() : new Node<>(list.head(), list.tail().map(Tree::of)); } }
@Override protected PriorityQueue<Integer> ofAll(int[] array) { return PriorityQueue.ofAll(List.ofAll(array)); }
@Override protected PriorityQueue<Float> ofAll(float[] array) { return PriorityQueue.ofAll(List.ofAll(array)); }
@Override protected PriorityQueue<Double> ofAll(double[] array) { return PriorityQueue.ofAll(List.ofAll(array)); }
@Override protected PriorityQueue<Character> ofAll(char[] array) { return PriorityQueue.ofAll(List.ofAll(array)); }
@Override protected PriorityQueue<Byte> ofAll(byte[] array) { return PriorityQueue.ofAll(List.ofAll(array)); }
@Override protected PriorityQueue<Boolean> ofAll(boolean[] array) { return PriorityQueue.ofAll(List.ofAll(array)); }
@Override protected List<Byte> ofAll(byte[] array) { return List.ofAll(array); }
@Override protected List<Short> ofAll(short[] array) { return List.ofAll(array); }
@Override protected List<Integer> ofAll(int[] array) { return List.ofAll(array); }
@Override protected List<Long> ofAll(long[] array) { return List.ofAll(array); }
@Override protected List<Float> ofAll(float[] array) { return List.ofAll(array); }
@Override protected List<Double> ofAll(double[] array) { return List.ofAll(array); }
@Override protected List<Character> ofAll(char[] array) { return List.ofAll(array); }
@Override protected PriorityQueue<Long> ofAll(long[] array) { return PriorityQueue.ofAll(List.ofAll(array)); }
@Override protected <T> List<T> ofAll(Iterable<? extends T> elements) { return List.ofAll(elements); }
@Override protected PriorityQueue<Short> ofAll(short[] array) { return PriorityQueue.ofAll(List.ofAll(array)); }
@Override protected List<Boolean> ofAll(boolean[] array) { return List.ofAll(array); }
/** * Returns a new Node containing the given value and having the given children. * * @param value A value * @param children The child nodes, possibly empty * @param <T> Value type * @return A new Node instance. */ static <T> Node<T> of(T value, Iterable<Node<T>> children) { Objects.requireNonNull(children, "children is null"); return new Node<>(value, List.ofAll(children)); }
/** * Tests if this TraversableOnce contains all given elements. * * <p>The result is equivalent to {@code elements.isEmpty() ? true : contains(elements.head()) && * containsAll(elements.tail())} but implemented without recursion. * * @param elements A List of values of type T. * @return true, if this List contains all given elements, false otherwise. * @throws NullPointerException if {@code elements} is null */ default boolean containsAll(java.lang.Iterable<? extends T> elements) { Objects.requireNonNull(elements, "elements is null"); return List.ofAll(elements).distinct().findFirst(e -> !this.contains(e)).isEmpty(); }