package com.github.scr.j8iterables;
import com.github.scr.j8iterables.core.ToDoubleSpliterator;
import com.github.scr.j8iterables.core.ToIntSpliterator;
import com.github.scr.j8iterables.core.ToLongSpliterator;
import com.google.common.annotations.VisibleForTesting;
import javax.annotation.Nonnull;
import java.util.Spliterator;
import java.util.function.ToDoubleFunction;
import java.util.function.ToIntFunction;
import java.util.function.ToLongFunction;
/**
* Utility methods to extend Spliterator.
*
* @author scr
*/
@SuppressWarnings("WeakerAccess")
public class J8Spliterators {
@VisibleForTesting
J8Spliterators() {
}
@Nonnull
public static <T> Spliterator.OfInt mapToInt(
Spliterator<T> iterator, ToIntFunction<T> toIntFunction) {
return new ToIntSpliterator<>(iterator, toIntFunction);
}
@Nonnull
public static <T> Spliterator.OfLong mapToLong(
Spliterator<T> iterator, ToLongFunction<T> toLongFunction) {
return new ToLongSpliterator<>(iterator, toLongFunction);
}
@Nonnull
public static <T> Spliterator.OfDouble mapToDouble(
Spliterator<T> iterator, ToDoubleFunction<T> toDoubleFunction) {
return new ToDoubleSpliterator<>(iterator, toDoubleFunction);
}
}