Merge pull request #12556 from GeoffChurch/insertInStream
Improve `insertInStream`
This commit is contained in:
commit
b8bab5bcbe
@ -2,9 +2,13 @@ package com.baeldung.streams;
|
|||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Spliterator;
|
||||||
|
import java.util.Spliterators;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
import java.util.stream.StreamSupport;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
@ -40,9 +44,13 @@ public class StreamAddUnitTest {
|
|||||||
assertEquals(resultList.get(3), (Double) 9.9);
|
assertEquals(resultList.get(3), (Double) 9.9);
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T> Stream<T> insertInStream(Stream<T> stream, T elem, int index) {
|
private static <T> Stream<T> insertInStream(Stream<T> stream, T elem, int index) {
|
||||||
List<T> result = stream.collect(Collectors.toList());
|
final Spliterator<T> spliterator = stream.spliterator();
|
||||||
result.add(index, elem);
|
final Iterator<T> iterator = Spliterators.iterator(spliterator);
|
||||||
return result.stream();
|
|
||||||
|
return Stream.concat(Stream.concat(
|
||||||
|
Stream.generate(iterator::next).limit(index),
|
||||||
|
Stream.of(elem)),
|
||||||
|
StreamSupport.stream(spliterator, /* parallel= */ false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user