Tag: flatmap

flatMap是否保证是懒惰的?

请考虑以下代码: urls.stream() .flatMap(url -> fetchDataFromInternet(url).stream()) .filter(…) .findFirst() .get(); 当第一个url足够时, fetchDataFromInternet会为第二个url调用fetchDataFromInternet ? 我尝试了一个较小的例子,它看起来像预期的那样工作。 即逐个处理数据但是可以依赖这种行为吗? 如果没有,在.flatMap(…)之前调用.sequential() .flatMap(…)帮助吗? Stream.of(“one”, “two”, “three”) .flatMap(num -> { System.out.println(“Processing ” + num); // return FetchFromInternetForNum(num).data().stream(); return Stream.of(num); }) .peek(num -> System.out.println(“Peek before filter: “+ num)) .filter(num -> num.length() > 0) .peek(num -> System.out.println(“Peek after filter: “+ num)) .forEach(num -> { System.out.println(“Done ” […]