All Downloads are FREE. Search and download functionalities are using the official Maven repository.

spring.turbo.util.collection.StreamFactories Maven / Gradle / Ivy

package spring.turbo.util.collection;

import org.springframework.lang.Nullable;
import spring.turbo.util.Asserts;

import java.util.Enumeration;
import java.util.Iterator;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;

/**
 * {@link Stream} 创建工具
 *
 * @author 应卓
 * @see SetFactories
 * @see ListFactories
 * @since 1.0.13
 */
public final class StreamFactories {

    /**
     * 私有构造方法
     */
    private StreamFactories() {
        super();
    }

    @SafeVarargs
    public static  Stream newStream(T... elements) {
        Asserts.notNull(elements);
        Asserts.noNullElements(elements);
        return Stream.of(elements);
    }

    @SafeVarargs
    public static  Stream nullSafeNewStream(@Nullable T... elements) {
        return ListFactories.nullSafeNewArrayList(elements).stream();
    }

    // -----------------------------------------------------------------------------------------------------------------

    public static  Stream newStream(@Nullable Iterator iterator) {
        if (iterator == null) {
            return Stream.empty();
        }
        final Spliterator spliterator = Spliterators.spliteratorUnknownSize(iterator, 0);
        return StreamSupport.stream(spliterator, false);
    }

    public static  Stream newStream(@Nullable Iterator iterator, boolean parallel) {
        if (iterator == null) {
            return Stream.empty();
        }
        final Spliterator spliterator = Spliterators.spliteratorUnknownSize(iterator, 0);
        return StreamSupport.stream(spliterator, parallel);
    }

    // -----------------------------------------------------------------------------------------------------------------

    public static  Stream newSteam(@Nullable Enumeration enumeration) {
        if (enumeration == null) {
            return Stream.empty();
        }
        final Spliterator spliterator = Spliterators.spliteratorUnknownSize(new EnumerationIterator<>(enumeration),
                0);
        return StreamSupport.stream(spliterator, false);
    }

    public static  Stream newSteam(@Nullable Enumeration enumeration, boolean parallel) {
        if (enumeration == null) {
            return Stream.empty();
        }
        final Spliterator spliterator = Spliterators.spliteratorUnknownSize(new EnumerationIterator<>(enumeration),
                0);
        return StreamSupport.stream(spliterator, parallel);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy