Recuperare un elemento random da una lista in Java
Oggi vediamo tre modi per recuperare un elemento random da una lista.
Useremo tre oggetti distinti:
Il primo è inoltre suggerito nel caso di utilizzo del multi-threading.
Partiremo sempre dallo stessa ArrayList.
Partiamo dall'ultimo che è più semplice:
public class Test {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add("Matteo");
list.add("Simona");
list.add("Alessio");
Test t = new Test();
for (int i = 0; i < 5; i++) {
System.out.println("Item: " + t.getMathRandomList(list));
}
}
public String getMathRandomList(ArrayList list) {
int index = (int) (Math.random() * list.size());
return list.get(index);
}
}
Con Math.random reuperiamo un numero "a caso" scelto dalla lista.
public class Test {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add("Matteo");
list.add("Simona");
list.add("Alessio");
Test t = new Test();
for (int i = 0; i < 5; i++) {
System.out.println("Item: " + t.getRandomList(list));
}
}
public String getRandomList(ArrayList list) {
Random random = new Random();
int index = random.nextInt(list.size());
return list.get(index);
}
}
Qui usiamo Random e il metodo nextInt, passandogli la dimensione della lista.
Infine usiamo ThreadLocalRandom:
public class Test {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add("Matteo");
list.add("Simona");
list.add("Alessio");
Test t = new Test();
for (int i = 0; i < 5; i++) {
System.out.println("Item: " + t.getThreadRandomList(list));
}
}
public String getThreadRandomList(ArrayList list) {
int index = ThreadLocalRandom.current().nextInt(list.size());
return list.get(index);
}
}
Come già detto, questo ultimo esempio è consigliato soprattutto nel caso di uso del multi-threading.
Questa classe ci permette di generare numeri in maniera isolata dal thread corrente.
Enjoy!
java random math threadlocalrandom arraylist
Commentami!