Java Code Examples for java.util.stream.Stream#iterate()

The following examples show how to use java.util.stream.Stream#iterate() . These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source Project: code   File: TestStreamAPI.java    License: Apache License 2.0 6 votes vote down vote up
/**
 * 创建Stream
 */
@Test
public void test1() {
    // 1.可以通过Collection 系列集合提供的stream()或parallelStream()
    List<String> list = new ArrayList<>();
    Stream<String> stream1 = list.stream();

    // 2.通过 Arrays 中的静态方法stream()获取数组流
    Employee[] emps = new Employee[10];
    Stream<Employee> stream2 = Arrays.stream(emps);

    // 3.通过Stream 类中的静态方法of()
    Stream<String> stream3 = Stream.of("a", "b", "c");

    // 4.创建无限流
    // 迭代
    Stream<Integer> stream4 = Stream.iterate(0, (x) -> x + 2);
    stream4.limit(10).forEach(System.out::println);
    // 生成
    Stream.generate(Math::random)
            .limit(5)
            .forEach(System.out::println);
}
 
Example 2
Source Project: mug   File: MoreStreamsTest.java    License: Apache License 2.0 5 votes vote down vote up
@Test public void flattenWithInfiniteOuterStream() throws Exception {
  Stream<List<Integer>> infinite = Stream.iterate(
      ImmutableList.of(1), l -> l.stream().map(i -> i + 1).collect(toImmutableList()));
  Stream<Integer> flattened = MoreStreams.flatten(infinite.map(l -> l.stream()));
  assertThat(flattened.limit(5).collect(toList()))
      .containsExactly(1, 2, 3, 4, 5).inOrder();
}
 
Example 3
/**
 * This test is ignored, because it proves that java 8 collectors
 * materialize whole sets. See the next test.
 */
@Test(timeout = 500)
@Ignore
public void testGroupByNonStreamyShitty() {
    final Stream<Integer> infiniteStream = Stream.iterate(0, i -> i + 1);
    // This is an infinite stream containing all numbers. We're going to
    // chunk it up into batches of 10, and see if we can get the JVM to
    // explode.
    final Map<Integer, List<Integer>> collect = infiniteStream
            .limit(1000000000)
            .collect(Collectors.groupingBy(i -> i / 10));

    assertEquals(collect.get(0), Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9));
}
 
Example 4
/**
 * This test is proves that the streamy way works. Observe how it doesn't
 * time out like the above test does.
 */
@Test(timeout = 500)
public void testGroupByStreamy() {
    final Stream<Integer> infiniteStream = Stream.iterate(0, i -> i + 1);
    // This is an infinite stream containing all numbers. We're going to
    // chunk it up into batches of 10, and see if we can get the JVM to
    // explode.
    final Stream<List<Integer>> groupedStream = OrderedStreamUtils.groupBy(infiniteStream.limit(1000000000), i -> i / 10);

    assertEquals(groupedStream.findFirst().get(), Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9));
}
 
Example 5
/**
 * This test validates that we don't get stack overflow exceptions.
 */
@Test
@Ignore
public void testNoStackOverflow() {
    final Stream<Integer> infiniteStream = Stream.iterate(0, i -> i + 1);
    // This is an infinite stream containing all numbers. We're going
    // to group all of them together, and see if the stack explodes.
    final Stream<List<Integer>> groupedStream = OrderedStreamUtils.groupBy(infiniteStream.limit(100000), i -> 1);

    assertEquals(100000, groupedStream.findFirst().get().size());
}
 
Example 6
Source Project: tutorials   File: EmployeeTest.java    License: MIT License 5 votes vote down vote up
@Test
public void whenLimitInfiniteStream_thenGetFiniteElements() {
    Stream<Integer> infiniteStream = Stream.iterate(2, i -> i * 2);

    List<Integer> collect = infiniteStream
      .skip(3)
      .limit(5)
      .collect(Collectors.toList());
  
    assertEquals(collect, Arrays.asList(16, 32, 64, 128, 256));
}
 
Example 7
@Test
public void should_not_build_a_repeating_stream_on_a_non_sized_stream() {
    // Given
    Stream<String> strings = Stream.iterate("+", s -> s);

    // Then
    assertThatIllegalArgumentException().isThrownBy(() -> StreamsUtils.repeat(strings, 3));
}
 
Example 8
Source Project: protonpack   File: TakeWhileTest.java    License: MIT License 5 votes vote down vote up
@Test public void
take_while_takes_items_while_condition_is_met() {
    Stream<Integer> infiniteInts = Stream.iterate(0, i -> i + 1);
    Stream<Integer> finiteInts = StreamUtils.takeWhile(infiniteInts, i -> i < 10);

    assertThat(finiteInts.collect(Collectors.toList()), hasSize(10));
}
 
Example 9
Source Project: protonpack   File: TakeWhileTest.java    License: MIT License 5 votes vote down vote up
@Test public void
take_while_inclusive_takes_items_while_condition_is_met_but_includes_first_condition_breaker() {
    Stream<Integer> infiniteInts = Stream.iterate(0, i -> i + 1);
    Stream<Integer> finiteInts = StreamUtils.takeWhileInclusive(infiniteInts, i -> i < 10);

    assertThat(finiteInts.collect(Collectors.toList()), hasSize(11));
}
 
Example 10
Source Project: tutorials   File: EmployeeTest.java    License: MIT License 5 votes vote down vote up
@Test
public void whenIterateStream_thenGetInfiniteStream() {
    Stream<Integer> evenNumStream = Stream.iterate(2, i -> i * 2);

    List<Integer> collect = evenNumStream
      .limit(5)
      .collect(Collectors.toList());
  
    assertEquals(collect, Arrays.asList(2, 4, 8, 16, 32));
}
 
Example 11
default <T> void initElements(final T targetPage) {
	final Stream<Class> pageChain = Stream.iterate(targetPage.getClass(), Class::getSuperclass);
	takeWhile(pageChain, pageObject -> !pageObject.equals(Object.class))
			.flatMap(pageObject -> Stream.of(pageObject.getDeclaredFields()))
			.filter(field -> field.isAnnotationPresent(HTML.class))
			.forEach(field -> initElement(targetPage, field, field.getAnnotation(HTML.class)));
}
 
Example 12
Source Project: tutorials   File: StreamUtilsUnitTest.java    License: MIT License 5 votes vote down vote up
@Test
// givenInfiniteStream_whenTakeWhile10_shouldReturnStreamOfSize10
public void givenInfiniteStream_whenTakeWhile10_shouldReturnStream() {
    Stream<Integer> infiniteInts = Stream.iterate(0, i -> i + 1);
    Stream<Integer> finiteInts = StreamUtils.takeWhile(infiniteInts, i -> i < 10);

    assertThat(finiteInts.collect(Collectors.toList()), hasSize(10));
}
 
Example 13
Source Project: tutorials   File: StreamUtilsUnitTest.java    License: MIT License 5 votes vote down vote up
@Test
public void givenInfiniteStream_whenTakeUntil10_shouldReturnStreamUpto10() {
    Stream<Integer> infiniteInts = Stream.iterate(0, i -> i + 1);
    Stream<Integer> finiteInts = StreamUtils.takeUntil(infiniteInts, i -> i > 10);

    assertThat(finiteInts.collect(Collectors.toList()), hasSize(11));
}
 
Example 14
Source Project: tutorials   File: ProtonpackUnitTest.java    License: MIT License 4 votes vote down vote up
@Test
public void whenTakeWhile_thenTakenWhile() {
    Stream<Integer> streamOfInt = Stream.iterate(1, i -> i + 1);
    List<Integer> result = StreamUtils.takeWhile(streamOfInt, i -> i < 5).collect(Collectors.toList());
    assertThat(result).contains(1, 2, 3, 4);
}
 
Example 15
Source Project: tutorials   File: StreamApi.java    License: MIT License 4 votes vote down vote up
public static Integer getInfiniteStreamLastElementUsingReduce() {
    Stream<Integer> stream = Stream.iterate(0, i -> i + 1);
    return stream.limit(20).reduce((first, second) -> second).orElse(null);
}
 
Example 16
Source Project: elm-plugin   File: ElmTreeUtil.java    License: MIT License 4 votes vote down vote up
private static Stream<Optional<PsiElement>> getSiblingsStream(PsiElement element) {
    return Stream.iterate(
            Optional.ofNullable(element),
            prev -> prev.map(e -> Optional.ofNullable(e.getNextSibling())).orElse(Optional.empty())
    );
}
 
Example 17
@Test
void testPartition() {
    Stream<Integer> stream = Stream.iterate(1, i -> i + 1);
    MoreStreams.partition(stream, 100).limit(10).forEach(System.out::println);
}
 
Example 18
Source Project: tutorials   File: ProtonpackUnitTest.java    License: MIT License 4 votes vote down vote up
@Test
public void whenTakeUntil_thenTakenUntil() {
    Stream<Integer> streamOfInt = Stream.iterate(1, i -> i + 1);
    List<Integer> result = StreamUtils.takeUntil(streamOfInt, i -> i > 50).collect(Collectors.toList());
    assertThat(result).contains(10, 20, 30, 40);
}
 
Example 19
Source Project: tutorials   File: InfiniteStreams.java    License: MIT License 4 votes vote down vote up
private static void doWhileStreamWay() {
    Stream<Integer> integers = Stream.iterate(0, i -> i + 1);
    integers.limit(10).forEach(System.out::println);
}
 
Example 20
Source Project: tutorials   File: StreamUtilsExample.java    License: MIT License 4 votes vote down vote up
public void takeWhileAndTakeUntilStream() {
    Stream<Integer> infiniteInts = Stream.iterate(0, i -> i + 1);
    Stream<Integer> finiteIntsWhileLessThan10 = StreamUtils.takeWhile(infiniteInts, i -> i < 10);
    Stream<Integer> finiteIntsUntilGreaterThan10 = StreamUtils.takeUntil(infiniteInts, i -> i > 10);
}