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.

Iterando dentro de un filtro de transmisión de Java

El código anterior intentaría encontrar un partNumber de una lista de partNumbers, donde la descripción del partNumber contiene un ‘rateAbbr’.
Este código funcionaba hasta que ‘rateAbbr’ era un String, pero ahora se ha cambiado a una lista de rateAbbrs y necesito encontrar un número de parte cuya descripción contenga cualquiera de los rateAbbrs. Lo intenté con streams, pero todavía no tuve suerte. Cualquier ayuda es apreciada.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para modificar el código y encontrar un número de parte cuya descripción contenga alguna de las abreviaturas de tarifas, puede reemplazar el segundo método de filtro() con un predicado que verifique si alguna de las abreviaturas de tarifa está contenida en la descripción del número de parte utilizando el método contains() de la clase String.

    Aquí hay un fragmento de código de ejemplo que demuestra esta modificación:

    List<string> rateAbbrs = Arrays.asList("tasa1", "tasa2", "tasa3");
    
    return Arrays.stream(partNumbers.get())
        .filter(partNumber -> Objects.nonNull(partNumber.getDescription()))
        .filter(partNumber -> rateAbbrs.stream().anyMatch(rateAbbr -> 
            partNumber.getDescription().toLowerCase().contains(rateAbbr.toLowerCase())))
        .findFirst();
    

    En este código modificado, el segundo método de filtro() se reemplaza con un predicado que utiliza el método anyMatch() de la clase Stream para verificar si alguna de las abreviaturas de tarifa está contenida en la descripción del número de parte. El método anyMatch() devuelve true si al menos un elemento del stream coincide con el predicado dado.

    El parámetro rateAbbr en el método anyMatch() es una expresión lambda que toma una abreviatura de tarifa y verifica si está contenida en la descripción del número de parte después de convertir ambas cadenas a minúsculas utilizando el método toLowerCase() de la clase String.

    Al utilizar operaciones de stream, puede modificar fácilmente el código para satisfacer el nuevo requisito de encontrar un número de parte cuya descripción contenga alguna de las abreviaturas de tarifa en la lista.

Comments are closed.