All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.stanford.nlp.util.IterableIterator Maven / Gradle / Ivy

Go to download

Stanford Parser processes raw text in English, Chinese, German, Arabic, and French, and extracts constituency parse trees.

There is a newer version: 3.9.2
Show newest version
package edu.stanford.nlp.util;

import java.util.*;
import java.util.stream.Stream;

/**
 * This cures a pet peeve of mine: that you can't use an Iterator directly in
 * Java 5's foreach construct.  Well, this one you can, dammit.
 *
 * @author Bill MacCartney
 */
public class IterableIterator implements Iterator, Iterable {

  private Iterator it;
  private Iterable iterable;
  private Stream stream;

  public IterableIterator(Iterator it) {
    this.it = it;
  }

  public IterableIterator(Iterable iterable) {
    this.iterable = iterable;
    this.it = iterable.iterator();
  }

  public IterableIterator(Stream stream) {
    this.stream = stream;
    this.it = stream.iterator();
  }

  public boolean hasNext() { return it.hasNext(); }
  public E next() { return it.next(); }
  public void remove() { it.remove(); }
  
  public Iterator iterator() {
    if (iterable != null) {
      return iterable.iterator();
    } else if (stream != null) {
      return stream.iterator();
    } else {
      return this;
    }
  }

  @Override
  public Spliterator spliterator() {
    if (iterable != null) {
      return iterable.spliterator();
    } else if (stream != null) {
      return stream.spliterator();
    } else {
      return Spliterators.spliteratorUnknownSize(it, Spliterator.ORDERED | Spliterator.CONCURRENT);
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy