如何在Java中对数组进行洗牌

在Java中,有两种方法可以对数组进行洗牌操作。

    1. 随机打乱集合 (Collections.shuffle() 方法)

 

    随机类 (Random Class)

使用Collection类对数组元素进行洗牌操作。

我们可以从数组中创建一个列表,然后使用Collections类的shuffle()方法来随机排序其元素。然后将列表转换回原始数组。

package com.Olivia.examples;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class ShuffleArray {

	public static void main(String[] args) {

		Integer[] intArray = { 1, 2, 3, 4, 5, 6, 7 };

		List<Integer> intList = Arrays.asList(intArray);

		Collections.shuffle(intList);

		intList.toArray(intArray);

		System.out.println(Arrays.toString(intArray));
	}
}

输出:[1, 7, 5, 2, 3, 6, 4] 请注意,Arrays.asList()仅适用于对象数组。泛型无法使用自动装箱的概念。因此,您不能使用这种方式对原始数组进行洗牌。

使用 Random 类对数组进行洗牌。

我们可以用一个for循环遍历数组元素。然后,我们使用Random类来生成一个随机索引号。然后将当前索引元素与随机生成的索引元素进行交换。在for循环结束时,我们将得到一个随机打乱的数组。

package com.Olivia.examples;

import java.util.Arrays;
import java.util.Random;

public class ShuffleArray {

	public static void main(String[] args) {
		
		int[] array = { 1, 2, 3, 4, 5, 6, 7 };
		
		Random rand = new Random();
		
		for (int i = 0; i < array.length; i++) {
			int randomIndexToSwap = rand.nextInt(array.length);
			int temp = array[randomIndexToSwap];
			array[randomIndexToSwap] = array[i];
			array[i] = temp;
		}
		System.out.println(Arrays.toString(array));
	}
}

输出:[2, 4, 5, 1, 7, 3, 6] 的一个选项是: [2, 4, 5, 1, 7, 3, 6]

发表回复 0

Your email address will not be published. Required fields are marked *


广告
将在 10 秒后关闭
bannerAds