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í?
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:
En este código, estamos usando el método
IntStream.range
para crear un rango de índices de 0 hasta el tamaño demainArray
. Luego, usamos el métodofilter
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 demainArray
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.