interfaces implementations example ejemplo java union set intersection

implementations - set java ejemplo



Java: ¿Existe una manera fácil y rápida de unir AND, OR o XOR juntos? (5)

Puede usar la clase Google-Collections Sets que tiene los métodos intersection () union () y simétricoDifference ().

Sets.intersection(set1, set2); Sets.union(set1, set2); SetView view = Sets.intersection(Sets.union(set1, set2), set3); Set result = view.copyInto(new HashSet());

Es decir, si tuviera dos o más conjuntos y quisiera devolver un nuevo conjunto que contenga:

  1. Todos los elementos que cada conjunto tiene en común (AND).
  2. Todos los elementos en total de cada conjunto (OR).
  3. Todos los elementos únicos para cada conjunto. (XOR)

¿Existe una manera fácil y preexistente de hacer eso?

Editar: Esa es la terminología equivocada, ¿no?


@Milhous dijo:

echa un vistazo a los juegos api. si usa addAll, puede obtener o. Si usa RetenerTodo, puede obtener y. No sé sobre el Xor.

Parece que si tuviera los conjuntos s1 y s2 podría hacer esto para obtener XOR:

  1. copia el conjunto s1 a s3
  2. s1.removeAll(s2); (s1 ahora contiene todos los elementos que no están en s2)
  3. s2.removeAll(s3); (s2 ahora contiene todos los elementos que no están en s3 = el antiguo s1)
  4. s1.addAll(s2); (s1 ahora contiene la unión de los dos conjuntos anteriores)

Asumiendo 2 Establecer objetos a y b

Y (intersección de dos conjuntos)

a.retainAll(b);

O (unión de dos conjuntos)

a.addAll(b);

XOR o bien lanza tu propio bucle:

foreach item if(a.contains(item) and !b.contains(item) || (!a.contains(item) and b.contains(item))) c.add(item)

o haz esto:

c.addAll(a); c.addAll(b); a.retainAll(b); //a now has the intersection of a and b c.removeAll(a);

Consulte la documentación del conjunto y esta página . Para más.


echa un vistazo a los juegos api . si usa addAll, puede obtener o. Si usa RetenerTodo, puede obtener y. No sé sobre el Xor.

Editar: de la documentación establecida.

... Si la colección especificada también es un conjunto, la operación addAll modifica de manera efectiva este conjunto de modo que su valor sea la unión de los dos conjuntos.

.... Si la colección especificada también es un conjunto, esta operación modifica efectivamente este conjunto de modo que su valor sea la intersección de los dos conjuntos.


Estoy bastante seguro de que la API de colecciones comunes de Yakarta admite uniones, intersecciones, etc.

Me sorprendería que la API de Google Collections no fuera tan buena.