Java API corriente. Encontrar el campo de juego un predicado objeto en una línea. Devolver algún valor por defecto si no existe

scenotaph:

Por ejemplo, tenemos una clase simple con algunos campos. Vamos a suponer, tenemos campos llamados 'nombre' y 'id'. Y quiero obtener el nombre de un objeto con id especificado y devolver algún DEFAULTNAME, si no hay tal objeto:

private List<MyObject> myObjects;
public String findFieldById(int id) {
    MyObject matchingObj = myObjects.stream()
                    .filter(m -> m.getId() == id)
                    .findFirst().orElse(null);

    return (matchingObj == null) ? "defaultName" : matchingObj.getName();
}

Mi pregunta es ¿cómo puedo fácilmente hacer esta comprobación en nulo en una corriente en una línea ?

Ousmane D .:

Puede llevar a cabo este tipo de operaciones en una tubería por mapeo de MyObject::getNamedespués de findFirstproporcionar de otro modo un valor por defecto a través orElse.

return myObjects.stream()
         .filter(m -> m.getId() == id)
         .findFirst()
         .map(MyObject::getName)
         .orElse("defaultName");

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=177528&siteId=1
Recomendado
Clasificación