Estoy tratando de verificar si un mapa contiene todos los contenidos de otro mapa. Por ejemplo, tengo un mapA que es Map<String, List<String>> y los elementos son:
"1" -> ["a","b"] "2" -> ["c","d"] otro mapB que también es Map<String, List<String>> , los elementos son:
"1" -> ["a"] "2" -> ["c","d"], Quiero crear una función de compare(mapA, mapB) que devolverá falso en este caso.
¿Cuál es la mejor manera de hacer esto?
Dentro de su método compare(mapA, mapB) , simplemente puede usar:
return mapA.entrySet().containsAll(mapB.entrySet());Prueba este código:
Assert.assertTrue(currentMap.entrySet().containsAll(expectedMap.entrySet()));
puedes probar esto
static boolean compare(Map<String, List<String>> mapA, Map<String, List<String>> mapB){ return mapA.entrySet().containsAll(mapB.entrySet()); }Como supongamos, los datos proporcionados son algo como esto:
Map<String, List<String>> mapA = new HashMap<>(); Map<String, List<String>> mapB = new HashMap<>(); mapA.put("1", Arrays.asList("a","b")); mapA.put("2", Arrays.asList("c","d")); mapB.put("1", Arrays.asList("a")); mapB.put("2", Arrays.asList("c", "d")); System.out.println(compare(mapA, mapB)); En este caso, el método compare(mapA, mapB) devolverá falso. Pero supongamos que los datos proporcionados son algo como esto:
Map<String, List<String>> mapA = new HashMap<>(); Map<String, List<String>> mapB = new HashMap<>(); mapA.put("1", Arrays.asList("a","b")); mapA.put("2", Arrays.asList("c","d")); mapB.put("1", Arrays.asList("a", "b")); mapB.put("2", Arrays.asList("c", "d")); System.out.println(compare(mapA, mapB)); En este caso, el método compare(mapA, mapB) , que he escrito, devolverá verdadero.
método de compare(mapA, mapB) básicamente verificando todas las entradas en mapA con mapB, si lo mismo devuelve sí, de lo contrario devuelve falso;