ストリームからランダムなオブジェクトを取得する方法 質問する

ストリームからランダムなオブジェクトを取得する方法 質問する

単語のリストがあり、新しいリストのサイズをパラメーターとして受け取り、新しいリストを返すメソッドを作成したいとします。元のソースリストからランダムな単語を取得するにはどうすればよいでしょうか?

public List<String> createList(int listSize) {
   Random rand = new Random();
   List<String> wordList = sourceWords.
      stream().
      limit(listSize).
      collect(Collectors.toList()); 

   return wordList;
}

では、Random をどこでどのように使用すればよいのでしょうか?

ベストアンサー1

適切な解決策を見つけました。Random はストリームを返すメソッドをいくつか提供します。たとえば、ランダムな整数のストリームを作成する ints(size) などです。

public List<String> createList(int listSize)
{
   Random rand = new Random();
   List<String> wordList = rand.
      ints(listSize, 0, sourceWords.size()).
      mapToObj(i -> sourceWords.get(i)).
      collect(Collectors.toList());

   return wordList;
}

おすすめ記事