ich versuchte, den Körper eines Verfahrens boolean exists(String value, boolean isCaseSensitive)
zu konvertieren:Java 8 Verfahren Bezug auf: entweder `` equals` oder equalsIgnoreCase`
for(String str : existingNames){
if(isCaseSensitive ? str.equals(name) : str.equalsIgnoreCase(name)){
return true;
}
}
return false;
zu einer Lösung, die Referenzen java8 Verfahren verwendet:
Predicate<String> equalityPred = isCaseSensitive ?
name::equals :
name::equalsIgnoreCase;
return existingNames.stream().anyMatch(equalityPred);
Dann sah ich, dass auf diese Weise die Gleichheit in die entgegengesetzte Richtung (zB value.equals(str)
) durchgeführt wird.
Gibt es eine Möglichkeit, dies zu beheben und immer noch Methodenverweise zu verwenden, und wenn nein, was würde der Java8 Weg sein.
Was ist das Problem mit 'str.equals (value)' oder 'value.equals (str)'? Wenn eines der beiden wahr ist, dann muss das andere auch wahr sein. –
@Ousmane Mahy Diaw ein möglicher Fall könnte sein, dass die Methode null Werte akzeptiert, aber die Sammlung wird nie enthalten. –