¿Cómo obtener elementos aleatorios de Java HashSet?

A diferencia de las clases List, la clase HashSet no proporciona ningún método mediante el cual podamos obtener los elementos utilizando su índice. Hace que sea difícil obtener elementos aleatorios de él usando el índice.

Necesitamos obtener elementos aleatorios de HashSet, lo que se puede hacer de dos maneras:

  1. Al convertirlo en una array
  2. Usando un iterador o un bucle for

Ejemplo:

Input:


hs.add(11);
hs.add(24);
hs.add(34);
hs.add(43);
hs.add(55);
hs.add(66);
hs.add(72);
hs.add(80);
hs.add(99);


Output:

Random element: 99

Método 1: mediante la conversión a una array.

  • En primer lugar, convierta HashSet en una array y luego acceda al elemento aleatorio desde allí.
  • Luego crearemos un objeto de clase Random y llamaremos al método nextInt() de esa clase que nos dará cualquier número aleatorio menor o igual al tamaño del HashSet.
  • Y luego, usando una array, simplemente imprimiremos el elemento presente en ese índice.

Java

// Java program to get random elements from HashSet
// using an array
  
import java.io.*;
import java.util.*;
  
class GFG {
    public static void main(String[] args)
    {
        // creating the HashSet
        Set<Integer> hs = new HashSet<Integer>();
  
        hs.add(11);
        hs.add(24);
        hs.add(34);
        hs.add(43);
        hs.add(55);
        hs.add(66);
        hs.add(72);
        hs.add(80);
        hs.add(99);
  
        // convert HashSet to an array
        Integer[] arrayNumbers = hs.toArray(new Integer[hs.size()]);
  
        // generate a random number
        Random rndm = new Random();
  
        // this will generate a random number between 0 and
        // HashSet.size - 1
        int rndmNumber = rndm.nextInt(hs.size());
  
        // get the element at random number index
        System.out.println("Random element: "
                           + arrayNumbers[rndmNumber]);
    }
}
Producción

Random element: 11

Método 2: usar un iterador o un bucle for

  • Para obtener elementos aleatorios del objeto HashSet, necesitamos generar un número aleatorio entre 0 (inclusive) y el tamaño del HashSet (exclusivo).
  • Y luego iterar a través del conjunto hasta llegar al elemento ubicado en la posición del número aleatorio como se indica a continuación.
  • En este enfoque, obtendremos el elemento en un índice aleatorio mediante un iterador.

Java

// Java program to get random elements from HashSet
// using an Iterator
  
import java.io.*;
import java.util.*;
  
class GFG {
    public static void main(String[] args)
    {
        Set<Integer> hs = new HashSet<Integer>();
  
        hs.add(11);
        hs.add(24);
        hs.add(34);
        hs.add(43);
        hs.add(55);
        hs.add(66);
        hs.add(72);
        hs.add(80);
        hs.add(99);
  
        System.out.println("Random element: "
                           + getRandomElement(hs));
    }
  
    private static <E>
        E getRandomElement(Set<? extends E> set)
    {
  
        Random random = new Random();
  
        // Generate a random number using nextInt
        // method of the Random class.
        int randomNumber = random.nextInt(set.size());
  
        Iterator<? extends E> iterator = set.iterator();
  
        int currentIndex = 0;
        E randomElement = null;
  
        // iterate the HashSet
        while (iterator.hasNext()) {
  
            randomElement = iterator.next();
  
            // if current index is equal to random number
            if (currentIndex == randomNumber)
                return randomElement;
  
            // increase the current index
            currentIndex++;
        }
  
        return randomElement;
    }
}
Producción

Random element: 99

Publicación traducida automáticamente

Artículo escrito por kaaruni1124 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *