Java 8 Stream Zeichenfolge Null oder leerer Filter

9

Ich habe Google Guava im Stream:

%Vor%

Wie Sie sehen, gibt es in der Filterfunktion eine Anweisung !String.isNullOrEmpty(entity) .

Ich möchte Guava nicht mehr im Projekt verwenden, also möchte ich es einfach ersetzen durch:

%Vor%

Wie kann ich es eleganter machen?

    
ServerSideCat 13.07.2015, 10:21
quelle

4 Antworten

11

Sie können Ihr eigenes Prädikat schreiben:

%Vor%

Verwenden Sie dann einfach valueNotNullOrEmpty als Filterargument.

    
fge 13.07.2015, 10:44
quelle
5

Sie können Ihre eigene Klasse Strings mit Ihrem eigenen Prädikat erstellen:

%Vor%

Dann in Ihrem Code:

%Vor%

Aber wie @fge erwähnt, können Sie das nicht auf einem Map.Entry<?,?> ...

verwenden     
Olivier Grégoire 13.07.2015 10:42
quelle
4

Wenn Sie commons-lang3 bevorzugen, hat StringUtils

  • isEmpty()
  • isNotEmpty()
  • isBlank()
  • isNotBlank()

Diese Methoden können in Filtern als Methodenreferenzen verwendet werden:

%Vor%

oder als Lambdas:

%Vor%     
rvertigo 26.08.2016 20:30
quelle
1

Sie können den Filter in zwei Schritte unterteilen:

%Vor%

Nebenbei bemerkt, die meisten Map.Entry.toString() Implementierungen machen genau das, was Sie in map() tun, also könnten Sie theoretisch einfach map(Map.Entry::toString) machen. Aber ich würde mich nicht darauf verlassen, es sei denn, Sie produzieren ein toString() oder etwas, das kein dokumentiertes oder deterministisches Verhalten erfordert.

Ich weiß auch, dass du Guava aufgeben willst, aber hier ist eine Lösung, die dich dazu bringen könnte, es noch einmal zu überdenken:

%Vor%     
shmosel 26.08.2016 20:50
quelle

Tags und Links