Iterables.find und Iterators.find - anstatt eine Ausnahme auszulösen, wird null

8

Ich verwende google-collections und versuche, das erste Element zu finden, das Prädikat erfüllt, wenn nicht, gib mir 'null' zurück.

Leider löst Iterables.find und Iterators.find NoSuchElementException aus, wenn kein Element gefunden wird.

Jetzt muss ich

machen %Vor%

Ich kann mich mit "versuchen / fangen" umgeben und dasselbe tun, aber für meine Anwendungsfälle werde ich viele Fälle finden, in denen kein Element gefunden wird.

Gibt es einen einfacheren Weg?

    
mjlee 30.03.2010, 05:32
quelle

4 Antworten

5

Es klingt, als sollten Sie Iterators.filter verwenden und dann den Wert von hasNext für den zurückgegebenen Iterator überprüfen.

    
Sean Parsons 30.03.2010, 10:45
quelle
12

Seit Guava 7 können Sie dies mithilfe der Iterables.find () - Überladung tun, die einen Standardwert verwendet:

%Vor%     
Etienne Neveu 20.10.2011 12:14
quelle
2

Dies wurde als Feature-Anfrage abgelegt:

Ссылка

Wir sind gerade dabei, daran zu arbeiten.

    
Kevin Bourrillion 30.03.2010 21:49
quelle
0

Ich bin nicht sicher, ob dies als einfacher gilt, aber es vermeidet zumindest Ausnahmen und erfordert nur einen Durchlauf über die iterierbare Quelle:

%Vor%     
finnw 30.03.2010 10:50
quelle

Tags und Links