Je ne sais pas comment faire
class Department {
String deptName;
List<Person> employees;
}
class Person {
String personName;
}
L'énoncé du problème est d'aller chercher le premier nom de la personne qui travaille dans un service particulier. Ce service peut être facultative. Voilà donc comment mon apparence méthode -
String getFirstPerson(Optional<Department> department, String defaultName) {
// TODO:
}
Je sais que la façon traditionnelle de faire cela, mais voudrais voir une certaine façon Java 8 + lambda pour simplifier. Encore un débutant ici - Veuillez donc remplir le pardon si je ne suis pas le format approprié.
J'ai aussi un nom par défaut à utiliser dans le cas où nous ne trouvons cette valeur.
PS Je sais que ce n'est pas la meilleure pratique d'envoyer en option en tant que paramètre de méthode. Ce n'est pas le code réel. Je suis juste en train de le simplifier.
Vous pouvez utiliser la map
fonction sur Optional
pour obtenir la liste des employés, puis utiliser stream
obtenir le prénom ou le retour defaultName
. Même si Incase Optional
est vide , vous obtiendrez ledefaultName
String getFirstPerson(Optional<Department> department, String defaultName) {
return department.map(d->d.getEmployees().stream().map(Person::getPersonName).findFirst().orElse(defaultName)).orElse(defaultName));
}
Si vous avez une chance d'obtenir null
sur getEmployees
vous pouvez utiliser ci - dessous approche
department.map(Department::getEmployees)
.filter(Objects::nonNull)
.map(emp->emp.stream().map(Person::getPersonName).findFirst().orElse(defaultName)).orElse(defaultName)