Encontrar una intersección de conjuntos en Java

Rashmi Patidar 12 octubre 2023
Encontrar una intersección de conjuntos en Java

El término Set es una interfaz presente en el paquete java.util. Un conjunto es una interfaz de colección que almacena listas desordenadas y no permite el almacenamiento de entidades duplicadas. Matemáticamente, la interfaz del conjunto tiene tres propiedades.

  1. Los elementos del Conjunto no son nulos.
  2. No hay dos elementos en el Conjunto que puedan ser iguales.
  3. Un conjunto no conserva el orden de inserción.

Utilice la inserción de conjuntos y busque la intersección de conjuntos en Java

Puede ver el programa a continuación, que demuestra la inserción de conjuntos y la búsqueda de la intersección entre dos conjuntos en Java.

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class SetIntersection {
  public static void main(String[] args) {
    Set<Integer> s1 = new HashSet<>();
    s1.add(2);
    s1.add(7);
    s1.add(1);
    System.out.println("Set1: " + s1);
    List list = Arrays.asList(1, 7, 6, 8);
    Set<Integer> s2 = new HashSet<>(list);
    System.out.println("Set2: " + s2);
    Set<Integer> intersection = new HashSet<>(s1);
    intersection.retainAll(s2);
    System.out.println("Intersection: " + intersection);
  }
}

En el código anterior, un conjunto se declara como el primer paso del proceso. El new HashSet crea una nueva instancia de la clase HashSet y asigna la referencia formada a la instancia de Set. La capacidad predeterminada de HashSet es 16 y el factor de carga es 0.75. La clase HashSet es compatible con la interfaz Set porque el HashSet implementa internamente la interfaz Set.

La variable s1 se inicializa utilizando el método add. La función agrega el objeto del tipo definido a la instancia de Set, considerando que el objeto no es nulo y no está duplicado. La función devuelve booleano en función de si el valor se inserta o no. La función lanza una ClassCastException si la clase del elemento especificado no es similar a la de la instancia de Set. Lanza una NullPointerException si el elemento es un valor nulo y una IllegalArgumentException si alguna propiedad del elemento prohíbe su adición a la colección Set.

Otra forma de crear un conjunto es usando la instancia de lista pasada al parámetro del constructor HashSet. La lista se inicializa con valores definidos utilizando el método asList de la clase Arrays. La instancia de la lista se pasa como parámetro en el constructor HashSet. La colección Set no conserva el orden en el que se almacenan los elementos.

Otra instancia del Conjunto se crea una instancia con la instancia s1 como parámetro de constructor. Ahora, esta referencia de intersection invoca otro método que es la función retainAll. La función solo retiene los elementos que están presentes al invocar la instancia y la instancia invocada. El método devuelve booleano true cuando el conjunto se cambia en la operación retain. Lanza una UnsupportedOperationException si no admite la operación sobre conjuntos. Lanza una ClassCastException si hay tipos de conjuntos incompatibles y una NullPointerException si el conjunto contiene un elemento nulo.

La salida de la intersección anterior entre conjuntos es la siguiente.

Producción :

Set1: [1, 2, 7]
Set2: [1, 6, 7, 8]
Intersection: [1, 7]
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Artículo relacionado - Java Set