Schreiben Sie eine Klasse, die es erlaubt über die Zeichen eines String zu iterieren. Sehen Sie vor, dass ein trySplit
die Arbeit fair auf zwei Spliterator-Objekte verteilt. Setzen Sie auch estimateSize
auf einen möglichst genauen Wert.
package name.panitz.util.streams;
import java.util.Spliterator;
import java.util.function.Consumer;
import java.util.stream.StreamSupport;
public class SpliterateString implements Spliterator<Character> {
int i = 0;
int end;
String s;
public SpliterateString(String s) {
this(0, s.length() - 1, s);
}
public SpliterateString(int i, int end, String s) {
this.i = i;
this.end = end;
this.s = s;
}
public static void main(String[] args) {
StreamSupport.stream(new SpliterateString("hallo"), false)
.forEach(x -> System.out.println(x));
System.out.println("und nun parallel");
StreamSupport.stream(new SpliterateString("hallo"), true)
.forEach(x -> System.out.println(x));
}
}