10 Ekim 2017 Salı

Spliterators Sınıfı - SplitIterator Döndürür

Giriş
Bu sınıf SplitIterator döndürür. SplitIterator nesnesi StreamSupport nesnesine geçilerek, Iterator'den stream oluşturulabilir.

splitIterator metodu - long[]
Açıklaması şöyle.
The returned spliterator always reports the characteristics SIZED and SUBSIZED. The caller may provide additional characteristics for the spliterator to report. (For example, if it is known the array will not be further modified, specify IMMUTABLE; if the array data is considered to have an encounter order, specify ORDERED). The method Arrays.spliterator(long[], int, int) can often be used instead, which returns a spliterator that reports SIZED, SUBSIZED, IMMUTABLE, and ORDERED.
spliteratorUnknownSize metodu - iterator + characteristics
Örnek - iterator + ORDERED
Iterator'dan Stream elde etmek için şöyle yaparız.
Stream<E> stream = StreamSupport.stream(
  Spliterators.spliteratorUnknownSize(sourceIterator, Spliterator.ORDERED), false);
Örnek - iterator + ORDERED
Bir sürü Iterator'dan Stream elde etmek için şöyle yaparız
public static <E> Iterator<E>
  chainedIterator(Collection<? extends Iterator<? extends E>> iterators) {

    if(iterators.isEmpty()) return Collections.emptyIterator();
    return iterators.stream()
      .flatMap(it -> StreamSupport.stream(
         Spliterators.<E>spliteratorUnknownSize(it, Spliterator.ORDERED), false))
      .iterator();
}

Hiç yorum yok:

Yorum Gönder