new implementations ejemplo array java dictionary collections set-intersection

implementations - set java ejemplo



Intersección de java.util.Mapa (6)

La Sets.intersection(Set, Set) de Sets.intersection(Set, Set) de Guava Sets.intersection(Set, Set) debería hacer el trabajo, con keySet de cada Map pasado como parámetros.

¿Hay algún método en java.util.Map o cualquier utilidad para realizar una intersección en dos mapas? (Para intersecar dos mapas por las "teclas")

No puedo encontrar ninguno. Siempre puedo implementar mi propia lógica de intersección, pero esperaba que ya hubiera alguna operación en una de las clases java.util.* Que haría esto.


Para probar la intersección, puede usar la operación containsAll (). Which ''Devuelve true si este conjunto contiene todos los elementos de la colección especificada. Si la colección especificada también es un conjunto, este método devuelve verdadero si es un subconjunto de este conjunto. ''

Para obtener una colección de estos elementos que se cruzan, puede usar la operación retener todo ().

Estos métodos se encuentran aquí

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Set.html


Pasa el cursor por las teclas de un mapa, mira si están en el segundo mapa:

private Map getIntersection(Map mapOne, Map mapTwo) { Set intersection = new HashMap(); for (Object key: mapOne.keySet()) { if (mapTwo.containsKey(key)) intersection.put(key, mapOne.get(key)); } return intersection; }


Qué tal si:

Map map1 = ...; Map map2 = ...; Map result = new ...(map1); result.keySet().retainAll(map2.keySet());

o:

Map map1 = ...; Map map2 = ...; Set result = new ...(map1.keySet()); result.retainAll(map2.keySet());


Si está usando Guava, puede usar Maps.difference para obtener un objeto MapDifference , desde el cual puede extraer las entriesInCommon() y entriesDiffering() como mapas. (Divulgación: Contribuyo a la guayaba).


Yo recomendaría apache c ollectionUtils#intersection

Haz lo siguiente:

Collection intersection= CollectionUtils.intersection(map1.keySet(),map2.keySet());