在Java中,乱序数组可以通过多种方法实现,下面是一些常见的方法:
1. 使用`Collections.shuffle`方法:
import java.util.Arrays;import java.util.Collections;import java.util.List;import java.util.Random;public class ShuffleArray {public static void main(String[] args) {Integer[] arr = {1, 2, 3, 4, 5};Listlist = Arrays.asList(arr); Collections.shuffle(list);arr = list.toArray(new Integer);System.out.println(Arrays.toString(arr));}}
2. 使用Fisher-Yates洗牌算法(也称为Knuth洗牌算法):
import java.util.Random;public class FisherYatesShuffle {private static final Random random = new Random();public static void main(String[] args) {int[] arr = new int;for (int i = 0; i < arr.length; i++) {arr[i] = i;}shuffle(arr);System.out.println(Arrays.toString(arr));}private static void shuffle(int[] array) {for (int i = array.length - 1; i > 0; i--) {int j = random.nextInt(i + 1);int temp = array[i];array[i] = array[j];array[j] = temp;}}}
3. 使用自定义比较器进行排序,其中使用HashMap来存储每个元素的随机序列号:
import java.util.Arrays;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;public class CustomSort {public static void main(String[] args) {Listlist = Arrays.asList(1, 2, 3, 4, 5); Collections.sort(list, new Comparator() { private Mapmap = new HashMap<>(); @Overridepublic int compare(Integer v1, Integer v2) {if (!map.containsKey(v1)) {map.put(v1, Math.random());}if (!map.containsKey(v2)) {map.put(v2, Math.random());}return Double.compare(map.get(v1), map.get(v2));}});System.out.println(list);}}
以上方法都可以实现数组的乱序,你可以根据具体需求选择合适的方法。

