How do I get the first element while continue streaming?

AlikElzin-kilaka :

I have a stream of generic items. I'd like to print the class name of the first item + the toString() of all the items.

If I had an Iterable, it would look like this:

Iterable<E> itemIter = ...;
boolean first = true;
for (E e : itemIter) {
    if (first) {
        first = false;
        System.out.println(e.getClass().getSimpleName());
    }
    System.out.println(e);
}

Can I do this on a stream (Stream<T>) with the stream API?

* Please note that it's a question about streams - not about iterators. I have a stream - not an iterator.

Ruslan :

There is StreamEx library that extends standard Java's Stream API. Using StreamEx.of(Iterator) and peekFirst :

StreamEx.of(itemIter.iterator())
        .peekFirst(e -> System.out.println(e.getClass().getSimpleName()))
        .forEach(System.out::println);

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=35021&siteId=1