Я пытаюсь получить объект из класса Person (класс уже создан), но я хочу получить его с помощью интерфейса Optional, поскольку объект может находиться или не входить в набор людей. Метод будет выглядеть следующим образом:
public Optional<Persona> getPersona(Persona pe)
{
Optional<Persona> user = Optional.ofNullable(null);
Predicate<Persona> ver = umano ->
{
boolean b = false;
for(Persona i: personas) // personas es el Set de personas ya creado
{
if(i.equals(pe))
b = true;
}
return b;
};
user.filter(ver);
if(user.isPresent())
user.get();
return user;
}
Я думаю, что ты запутался немного, довожу до сведения тебе несколько вещей:
Всегда ты можешь использовать Strem API, который уже берется за то, чтобы возвращать тебе опциональную стоимость.
Предполагая, что ты инициализировал твой список людей, и что ты знал, в который ты будешь искать
List<Persona> personas = Arrays.asList(new Persona("Kevin",22),new Persona("Ruslan",33),new Persona("Kevin",45));
, можешь определять ты mГ©todo одной lГ-nea buscarPersona
как:
public Optional<Persona> buscarPersona(String personaABuscar,List<Persona> personas) {
Objects.requireNotNull(personas, "agrega una lista de personas para buscar en ella");
Objects.requireNonNull(personaABuscar,"especifica un nombre para buscarlo");
return personas.stream().filter(persona->personaABuscar.equalsIgnorecase(persona.getNombre())).findFirst();
}
и использовать результат следующего способа:
String personaABuscar = "Kevin";
Optional<Persona> hallado = buscarPersona(personaABuscar,personas);
System.out.println("Se encontró a "+hallado.get().orElse("nadie :'v"));
if(hallado.isPresent()){
Persona elKevin = hallado.get();
System.out.println("hola soy " + elKevin.getNombre() + " y tengo " + elKevin.getEdad() + "años");
}