Al comparar de manera eficiente Mapas Verificación del interior de una lista de objetos en Java

Mel:

Por lo tanto, tengo un objeto, que tiene un HashMap en su interior (por supuesto, con el correspondiente captador y colocador).

public class ObjA {
   private HashMap<String, Boolean> mymap;
   ...
}

Entonces, tengo otra clase con una lista de los objetos (y correspondientes getters / setters):

public class ObjB {
   private List<ObjA> list;
   ...
}

A continuación, una tercera clase CheckerClasstiene que comprobar cuántos ObjAen la lista en el interior ObjBtiene el mismo mapa (significa esto mismas claves y los mismos valores para cada tecla).

Mi primer pensamiento fue: el bucle list, y para cada uno ObjAanalice su mapa a una String. Recoge todas las parsings en una Collection, y luego contar duplicados. Pero quiero eficientes algo más memoria, y más elegante: usted sabe, leer fácilmente. Y no estoy seguro de cómo conseguirlo.

Sprinter:

Aquí está una manera de crear un recuento de cada mapa único:

list.stream().collect(Collectors.groupingBy(ObjA::getMyMap, Collectors.counting());

Esto funciona porque Map.equalshace exactamente lo que quiere: comprueba si los conjuntos de claves son los mismos y se asignan a valores iguales.

De manera que para cada mapa único se puede encontrar el número de veces que aparece en la lista. O si lo desea específicamente a saber cuántas copias existen, a continuación, utilizar .values().stream().filter(c -> c > 1).count()el mapa resultante.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=318159&siteId=1
Recomendado
Clasificación