Container der einen nicht-null Wert enthalten oder nicht enthalten kann
Wenn ein Wert enthalten ist liefert isPresent()true und get() (bzw. getAsInt(), getAsLong(), …) liefern die Werte
public final class Optional<T>public final class OptionalIntpublic final class OptionalLongpublic final class OptionalDouble
Methoden
public boolean isEmpty()// gegenteil:public boolean isPresent()// If a value is present, performs the given action with the value, otherwise does nothing.public void ifPresent(Consumer<T> action)// If a value is present, returns the value, otherwise returns other.public T orElse (T other)// If a value is present, returns an Optional<U> as a result of applying the given mapping function tothe value, otherwise returns an empty Optional.public <U> Optional<U> map (Function<T,U> mapper)
Erzeugung
// Int StreamsIntStream.of(47, 55, 11); // 47, 55, 11IntStream.range(5, 10); // 5, 6, ..., 9// Infinite StreamsIntStream.iterate(3, x -> x*x).limit(4); // 3, 9, 81, 6561// Double StreamsDoubleStream.of(1./2, 1./3, 1./4); // 0.5, 0.33, 0.25IntStream.range(5, 10).asDoubleStream(); // 5.0, 6.0, ...// String and Char Streams"Java".chars(); // IntStream (!), wird zu ASCII-Werten"Zeile 1\nZeile 2".lines(); // "Zeile 1", "Zeile 2"// Random Streamsnew Random().ints(); // Unendlich langer Stream von RandIntsnew Random().ints(2); // Anzahlnew Random().ints(2, 1000, 2000); // Anzahl, von, bisnew Random().doubles(2); // [0 .. 1)new Random().doubles(2, 1000, 2000);// Array Streamsint [] prim = {2, 3, 5, 7, 11}Arrays.stream(prim); // IntStreamdouble[] fracs = {1./2, 1./3, 1./4}Arrays.stream(fracs); // DoubleStreamString[] namen = {"Tim", "Clara", "Paul"};Arrays.stream(namen); // Stream<String>// Array Streams for non-primitivesStream.of(namen); // Stream<String>// CollectionsList<String> namen = List.of("Tim", "Tom", "Paula");namen.stream(); // Tim, Tom, Paulanamen.parallelStream(); // Tim, Paula, Tom// Directories and FilesFiles.walk(Path.of("."))Files.lines(Path.of("Kafka.txt"), ISO_8859_1) // Per Zeile
Operationen
filter // filtert alle Elemente heraus, die das übergebene Predicate nicht erfüllenmap // transformiert alle Elemente durch Anwendung einer FunctionflatMap // bildet einen verschachtelten Stream auf einen "flachen" Stream abpeek // führt für jedes Element die übergebene Aktion ausdistinct // entfernt doppelt vorkommende Elementesorted // sortiert die Elementelimit // setzt eine Obergrenze für die Anzahl der Elementeskip // überspringt die ersten Elemente
Endoperationen
allMatch // prüft, ob alle Elemente das übergebene Predicate erfüllenanyMatch // prüft, ob mindestens ein Element das übergebene Predicate erfülltnoneMatch // prüft, ob keines der Elemente das übergebene Predicate erfülltcount // liefert die Anzahl der Elementemin // liefert das kleinste Elementmax // liefert das größte Elementreduce // "reduziert" den gesamten Stream auf einen einzigen WertfindFirst // liefert das erste ElementfindAny // liefert ein beliebiges ElementforEach // führt für jedes Element die übergebene Aktion austoArray // erzeugt aus den Stream-Elementen ein Arraycollect // erzeugt aus den Stream-Elementen eine Collection