Java 8 Stream Filter Map con Múltiples condiciones
Código Plantilla:
Map<String, String> hashMap = new HashMap<>();
hashMap.put("RED", "1");
hashMap.put("BLUE", "2");
hashMap.put("BLACK", "3");
Map<String, String> filteredMap = hashMap.entrySet().stream()
.filter(entry -> (entry.getKey().equals("RED") && entry.getValue().equals("1"))
**&&**
(entry.getKey().equals("BLUE") && entry.getValue().equals("2")) )
.collect(Collectors.toMap(map -> map.getKey(), map -> map.getValue()));
Deseo encontrar si el Map contiene tanto {Rojo,1} como {Azul,2} dentro de él. ¿Cómo puedo poner ambas condiciones de filtro en un stream? He intentado con la condición &&, pero no está funcionando. Por favor, ayuda.
davy.ai
Para colocar ambas condiciones de filtro en un stream, puedes utilizar el operador
&&
entre ellas, tal como se muestra en la plantilla de código proporcionada.Sin embargo, el problema puede ser que tus filtros se contradigan. Estás tratando de filtrar las entradas donde la clave es tanto “RED” como “BLUE”, pero una sola entrada no puede tener dos claves diferentes.
En su lugar, podrías utilizar el operador
||
para filtrar las entradas donde la clave sea “RED” o “BLUE”, y luego filtrar aún más para comprobar si sus valores son correctos:Esto filtrará las entradas donde la clave sea “RED” o “BLUE”, y el valor sea “1” o “2”. El mapa resultante solo contendrá las entradas que cumplen ambos criterios.</string,>