Ich versuche, von Guava zu Java 8 Streams zu migrieren, kann aber nicht herausfinden, wie ich mit Iterablen umgehen soll. Hier ist mein Code, um leere Zeichenfolgen aus der iterable zu entfernen:Wie Iterables.filter() durch Streams ersetzen?
Iterable<String> list = Iterables.filter(
raw, // it's Iterable<String>
new Predicate<String>() {
@Override
public boolean apply(String text) {
return !text.isEmpty();
}
}
);
Pay Aufmerksamkeit, es ist ein Iterable
, kein Collection
. Es kann möglicherweise eine unbegrenzte Anzahl von Elemente enthalten, ich kann nicht alles in den Speicher laden. Was ist meine Java 8 Alternative?
BTW, mit Lamba wird dieser Code aussehen sogar noch kürzer:
Iterable<String> list = Iterables.filter(
raw, item -> !item.isEmpty()
);
Welche Art ist 'raw'? – shmosel
Welche Version von Guava bist du? Oder möchten Sie Guava überhaupt nicht benutzen? – shmosel
@shmosel Ich möchte Guava loswerden und zu Java 8 Streams migrieren, wenn das überhaupt möglich ist. Vielleicht ist es nicht. Deshalb fragen Sie hier. – yegor256