NewUser:
Tengo dos mapas y tengo que comprobar si ambos tienen las mismas claves y el mismo número de claves o no y devolver un valor lógico. Me gustaría utilizar corrientes para esto y he conseguido es mediante la creación de otra lista
mapA
.entrySet()
.stream()
.filter(entry -> mapB.containsKey(entry.getKey()))
.collect(
Collectors.toMap(Entry::getKey, Entry::getValue));
Pero mi pregunta es que puedo hacerlo en una sola línea que no se crearía otra lista pero devolver un valor lógico si si son iguales o no.
rgettman:
No hay necesidad de utilizar corrientes para esto. Sólo obtener conjuntos y el uso clave de los mapas equals
, que se especifica en Set
la siguiente forma :
Devuelve
true
si el objeto especificado es también un conjunto, los dos conjuntos tienen el mismo tamaño, y cada miembro del conjunto especificado está incluido en este conjunto de [.]
Map<String, Integer> m1 = new HashMap<>();
m1.put("a", 10);
m1.put("b", 10);
m1.put("c", 10);
Map<String, Integer> m2 = new HashMap<>();
m2.put("c", 20);
m2.put("b", 20);
m2.put("a", 20);
System.out.println(m1.keySet().equals(m2.keySet())); //true