Java 从ArrayList中获取随机元素
ArrayList是集合框架的一部分,存在于java.util包中。它为我们提供了Java中的动态数组。
从列表中生成的随机数有很好的实用价值
有多种方法可以从ArrayList中获得一个随机元素。
1. Using Math.random()
2. 使用ArrayList Shuffle
3. 使用随机类
方法1:使用 Math.random()
语法 :
public static double random()
返回:
该方法返回一个大于或等于0.0且小于1.0的伪随机双数。
- Math.random()生成一个0到1之间的随机值。
- 将此值与ArrayList的大小相乘,只取此值的整数部分。
- 现在,执行上述步骤后生成的数字可以作为ArrayList的索引。
- 使用get()方法从ArrayList中使用上述生成的索引返回一个随机元素。
注意: 每次调用Math.random()方法都会产生一个新的随机值,但是ArrayList中元素的原始顺序并没有被打乱。
// 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<Integer> my_list = new ArrayList<Integer>();
// 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));
}
}
}
输出
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
方法2:使用 ArrayList Shuffle
- Java的Collections.shuffle()方法是对ArrayList中元素的顺序进行洗牌。
- 现在我们可以简单地迭代ArrayList并返回元素,因为它们现在是以随机顺序排列。
实际的ArrayList本身会被洗牌,原来的排序会丢失。
// 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<Integer> my_list = new ArrayList<Integer>();
// 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:使用 随机类功能
- 随机类的nextInt()方法可以用来生成一个0和ArrayList大小之间的随机值。
- 现在用这个数字作为ArrayList的索引。
- 使用get()方法从ArrayList中使用nextInt()方法生成的数字返回一个随机元素。
注意: ArrayList的原始顺序保持不变。
// 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<Integer> my_list = new ArrayList<Integer>();
// 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