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:
- Al convertirlo en una array
- 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