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.

Comparar dos arrays de cadenas por índice (flujo)

Quiero comparar dos arrays (del mismo tamaño) de strings y verificar que mainArray contenga elementos en subArray en función de su índice.

public static void main(String[] args) {
    List<String> mainArray = Arrays.asList("Libro rojo", "Pájaro amarillo", "Cielo verde");
    List<String> subArray = Arrays.asList("Rojo", "Amarillo", "Verde");
    
    boolean flag = false;
    for (int i = 0; i < mainArray.size(); i++) {
        flag = mainArray.get(i).contains(subArray.get(i));
        if(!flag){
            break;
        }
    }
}
//devuelve true

Esto se ve feo, ¿hay alguna solución con stream.filter o algo así?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes usar streams de Java para comparar dos arreglos de cadenas basándote en sus índices. Aquí hay un ejemplo de código utilizando streams de Java, los métodos filter y count:

    List<string> mainArray = Arrays.asList("Libro rojo", "Pájaro amarillo", "Cielo verde");
    List<string> subArray = Arrays.asList("Rojo", "Amarillo", "Verde");
    
    boolean flag = IntStream.range(0, mainArray.size())
            .filter(i -> mainArray.get(i).contains(subArray.get(i)))
            .count() == mainArray.size();
    

    En este código, estamos usando el método IntStream.range para crear un rango de índices de 0 hasta el tamaño de mainArray. Luego, usamos el método filter para mantener solamente los índices donde los elementos correspondientes en ambos arreglos coinciden. Finalmente, contamos la cantidad de índices que coinciden y la comparamos con el tamaño de mainArray para determinar si todos los elementos coinciden.

    Este código produce el mismo resultado que el ejemplo anterior pero de una manera más elegante y legible.

Comments are closed.