JavaのStream APIを使ってコレクションの要素をランダムな順序に並べ替えるには、Collections.shuffleメソッドを使用するのが一般的です。以下にその方法を示します。
まず、Streamをリストに変換し、そのリストをシャッフルしてから再びStreamに変換します。
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + '}';
}
}
public class Main {
public static void main(String[] args) {
// サンプルデータ
List<Person> people = Arrays.asList(
new Person("Alice", 30),
new Person("Bob", 25),
new Person("xiaoming", 35),
new Person("Diana", 28)
);
// リストをシャッフル
Collections.shuffle(people);
// シャッフルされたリストを再びStreamに変換
Stream<Person> shuffledStream = people.stream();
// 結果を表示
shuffledStream.forEach(System.out::println);
}
}
この方法では、以下の手順を踏んでいます:
1.元のStreamをリストに変換します。
2.Collections.shuffleメソッドを使ってリストをシャッフルします。
3.シャッフルされたリストを再びStreamに変換します。
これにより、元のStreamの要素がランダムな順序で処理されるようになります。