Java 8 - Opcional <CustomizedObject> obtener el primer elemento de la lista dentro de CustomizedObject

meso:

No estoy seguro de cómo hacer esto

class Department {
    String deptName;
    List<Person> employees;
}

class Person {
    String personName;
}

El planteamiento del problema es a buscar el primer nombre de la persona que trabaja en un departamento en particular. Este departamento puede ser opcional. Así que esto es como mi método busca -

String getFirstPerson(Optional<Department> department, String defaultName) {
// TODO: 
}

Sé que la forma tradicional de hacer esto, pero me gustaría ver alguna manera de Java 8 + lambda para simplificar esto. Siendo un novato aquí - por lo que Por favor, perdón si no estoy utilizando el formato correcto.

También tengo un nombre por defecto a utilizar en caso de que no encuentra ese valor.

PS Sé que no es la mejor práctica para enviar opcional como parámetro del método. Este no es el código real. Estoy tratando de simplificarlo.

Consorcio inactivo :

Puede utilizar la mapfunción de Optionalobtener la lista de los empleados y luego utilizar streamconseguir el primer nombre o devolución defaultName. Incluso en caso que si Optionalestá vacía obtendrá ladefaultName

String getFirstPerson(Optional<Department> department, String defaultName) {

   return department.map(d->d.getEmployees().stream().map(Person::getPersonName).findFirst().orElse(defaultName)).orElse(defaultName));
}

Si usted tiene una oportunidad de conseguir nullel getEmployeesque puede utilizar a continuación el enfoque

department.map(Department::getEmployees)
          .filter(Objects::nonNull)
          .map(emp->emp.stream().map(Person::getPersonName).findFirst().orElse(defaultName)).orElse(defaultName)

Supongo que te gusta

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