在Java中从 ArrayList 获取随机元素
ArrayList是集合框架的一部分,存在于Java.util 包中。它为我们提供了Java中的动态数组。
从列表中生成随机数具有很好的实用价值
有多种方法可以从 ArrayList 中获取随机元素:
- 使用 Math.random()
- 使用 ArrayList Shuffle
- 使用 Random 类
方法 1:使用Math.random()
句法 :
public static double random()
返回 :
此方法返回大于或等于 0.0 且小于 1.0 的伪随机双精度值。
- Math.random() 生成一个介于 0 和 1 之间的随机值。
- 将此值与 ArrayList 的大小相乘,并仅取此值的整数部分。
- 现在可以将执行上述步骤后生成的数字作为 ArrayList 的索引。
- 使用 get() 方法使用上面生成的索引从 ArrayList 返回一个随机元素。
注意:每次调用 Math.random() 方法时,它都会生成一个新的随机值,但是 ArrayList 中元素的原始顺序不会受到干扰。
Java
// Java program for Getting Random Elements
// from ArrayList using Math.random() function
import java.io.*;
import java.util.ArrayList;
class GFG {
public static void main(String[] args)
{
// creating ArrayList
ArrayList my_list = new ArrayList();
// adding elements
my_list.add(10);
my_list.add(80);
my_list.add(30);
my_list.add(70);
my_list.add(5);
my_list.add(90);
my_list.add(19);
my_list.add(25);
// loop to print elements at randonm
for (int i = 0; i < my_list.size(); i++)
{
// generating the index using Math.random()
int index = (int)(Math.random() * my_list.size());
System.out.println("Random Element is :"
+ my_list.get(index));
}
}
}
Java
// Java program for Getting Random Elements
// from ArrayList using Collections.shuffle()
import java.io.*;
import java.util.*;
import java.util.ArrayList;
class GFG {
public static void main(String[] args)
{
// creating ArrayList
ArrayList my_list = new ArrayList();
// adding elements
my_list.add(10);
my_list.add(80);
my_list.add(30);
my_list.add(70);
my_list.add(5);
my_list.add(90);
my_list.add(19);
my_list.add(25);
// using collections.shuffle to shuffle elements of
// ArrayList
Collections.shuffle(my_list);
// using for each loop to print values at random
System.out.println("Random values :");
for (Integer random_values : my_list)
{
System.out.print(random_values + " ");
}
}
}
Java
// Java program for Getting Random Elements
// from ArrayList using nextInt() function
import java.io.*;
import java.util.ArrayList;
import java.util.Random;
class GFG {
public static void main(String[] args)
{
// creating ArrayList
ArrayList my_list = new ArrayList();
// adding elements
my_list.add(10);
my_list.add(80);
my_list.add(30);
my_list.add(70);
my_list.add(5);
my_list.add(90);
my_list.add(19);
my_list.add(25);
// initializing random class
Random random_method = new Random();
// loop for generation random number
for (int i = 0; i < my_list.size(); i++)
{
// generating random index with the help of
// nextInt() method
int index = random_method.nextInt(my_list.size());
System.out.println("Random Element is :"
+ my_list.get(index));
}
}
}
输出
Random Element is :70
Random Element is :25
Random Element is :90
Random Element is :5
Random Element is :70
Random Element is :30
Random Element is :70
Random Element is :10
方法二:使用ArrayList Shuffle
- Java的 Collections.shuffle() 方法打乱了 ArrayList 中元素的顺序。
- 现在我们可以简单地遍历 ArrayList 并返回元素,因为它们现在以随机顺序排列。
注意:实际的 ArrayList 本身被打乱,原始排序丢失。
Java
// Java program for Getting Random Elements
// from ArrayList using Collections.shuffle()
import java.io.*;
import java.util.*;
import java.util.ArrayList;
class GFG {
public static void main(String[] args)
{
// creating ArrayList
ArrayList my_list = new ArrayList();
// adding elements
my_list.add(10);
my_list.add(80);
my_list.add(30);
my_list.add(70);
my_list.add(5);
my_list.add(90);
my_list.add(19);
my_list.add(25);
// using collections.shuffle to shuffle elements of
// ArrayList
Collections.shuffle(my_list);
// using for each loop to print values at random
System.out.println("Random values :");
for (Integer random_values : my_list)
{
System.out.print(random_values + " ");
}
}
}
输出
Random values :
19 5 25 90 10 30 80 70
方法 3:使用Random Class函数
- Random 类的nextInt()方法可用于生成介于 0 和 ArrayList 大小之间的随机值。
- 现在使用这个数字作为 ArrayList 的索引。
- 使用 get() 方法使用 nextInt() 方法生成的数字从 ArrayList 返回一个随机元素。
注意: ArrayList 的原始顺序保持不变。
Java
// Java program for Getting Random Elements
// from ArrayList using nextInt() function
import java.io.*;
import java.util.ArrayList;
import java.util.Random;
class GFG {
public static void main(String[] args)
{
// creating ArrayList
ArrayList my_list = new ArrayList();
// adding elements
my_list.add(10);
my_list.add(80);
my_list.add(30);
my_list.add(70);
my_list.add(5);
my_list.add(90);
my_list.add(19);
my_list.add(25);
// initializing random class
Random random_method = new Random();
// loop for generation random number
for (int i = 0; i < my_list.size(); i++)
{
// generating random index with the help of
// nextInt() method
int index = random_method.nextInt(my_list.size());
System.out.println("Random Element is :"
+ my_list.get(index));
}
}
}
输出
Random Element is :5
Random Element is :10
Random Element is :19
Random Element is :5
Random Element is :30
Random Element is :70
Random Element is :25
Random Element is :90