在Java中打乱数组元素的常见方法有:
1. 使用`Collections.shuffle()`方法:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CollectionShuffle {
public static void main(String[] argv) {
ArrayList
obj.add("A");
obj.add("B");
obj.add("C");
obj.add("D");
obj.add("E");
obj.add("F");
Collections.shuffle(obj);
System.out.println(obj);
}
}
2. 使用Fisher-Yates算法(也称为Knuth洗牌算法):
```java
import java.util.Random;
public class ShuffleArray {
public static int[] shuffle(int[] arr) {
Random rand = new Random();
for (int i = arr.length - 1; i > 0; i--) {
int j = rand.nextInt(i + 1);
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
return arr;
}
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
int[] shuffled = shuffle(arr);
for (int num : shuffled) {
System.out.print(num + " ");
}
}
}
3. 使用Java 8的流API:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class StreamShuffle {
public static void main(String[] args) {
List
List
.collect(Collectors.toList())
.stream()
.sorted((a, b) -> new Random().nextInt(2) - 1)
.collect(Collectors.toList());
System.out.println(shuffled);
}
}
以上方法都可以实现数组元素的随机打乱,你可以根据具体需求选择合适的方法。需要注意的是,`Collections.shuffle()`方法内部使用的是`Random`类的无参构造方法,而Fisher-Yates算法则是自己创建一个`Random`实例来进行随机操作。