es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Optimizar el uso de Streams

boolean isRoleOld,isRoleNew;
for (Relations relation : listOfRelations)
{
if (Constants.ROLE_OLD.equalsIgnoreCase(relation.getRole()))
{
isRoleOld = true;
}
if (Constants.ROLE_NEW.equalsIgnoreCase(relation.getRole()))
{
isRoleNew = true;
}
}

if (isRoleOld && isRoleNew)
{
“Success”
}else{
throw Exception();
}

Lo que he hecho hasta ahora es:

if (listOfRelations.stream()
.anyMatch(relation -> Constants.ROLE_OLD.equalsIgnoreCase(relation.getRole()))
&&
listOfRelations.stream()
.anyMatch(relation -> Constants.ROLE_NEW.equalsIgnoreCase(relation.getRole())))
{
System.out.println(“Éxito”);
}

Cómo utilizar streams de Java 8 para optimizar este código. El uso de anyMatch dos veces no es el punto.
Cualquier ayuda será apreciada.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para optimizar este código utilizando streams de Java 8, puedes utilizar el método allMatch en lugar del método anyMatch para verificar si todas las relaciones tienen un rol coincidente con Constants.ROLE_OLD y Constants.ROLE_NEW. Aquí está el código optimizado utilizando streams:

    boolean isRoleOld = listOfRelations.stream()
        .allMatch(relation -> Constants.ROLE_OLD.equalsIgnoreCase(relation.getRole()));
    
    boolean isRoleNew = listOfRelations.stream()
        .allMatch(relation -> Constants.ROLE_NEW.equalsIgnoreCase(relation.getRole()));
    
    if (isRoleOld && isRoleNew) {
        System.out.println("Éxito");
    } else {
        throw new Exception();
    }
    

    En este código optimizado, estamos utilizando streams dos veces, pero estamos verificando un rol específico en cada stream. De esta manera, podemos decidir si queremos lanzar una excepción, dependiendo de si ambos roles existen o no.

Comments are closed.