どうも、ちょげ(@chogetarou)です。
Map(マップ)のキー(key)をランダムに取得する方法を紹介します。
方法

Map(マップ)のキー(key)をランダムに取得するには、Randomを使います。
まず、Randomをインポートします。
(「java.util.*」をインポートしている場合は必要なし)
import java.util.Random;
Mapのキーをリストもしくは配列に変換します。
次に、Randomのインスタンスを生成し、インスタンスからnextInt()を呼び出します。
nextInt()の引数に変換したリストもしくは配列の要素数を指定します。
そして、キーを変換したリストもしくは配列のnextInt()の戻り値のインデックスにアクセスします。
//map=対象のマップ, T=マップのキーの型
List<T> list = new ArrayList<T>(map.keySet());
int index = new Random().nextInt(list.size());
T result = list.get(index);
上記のインデックスにアクセスすることで、Map(マップ)のキー(key)をランダムに取得できます。
使用例
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
Map<String, Integer> numbers = new HashMap<String, Integer>();
numbers.put("one", 1);
numbers.put("two", 2);
numbers.put("three", 3);
numbers.put("four", 4);
numbers.put("five", 5);
List<String> list = new ArrayList<String>(numbers.keySet());
int index = new Random().nextInt(list.size());
String result = list.get(index);
System.out.println(result);
}
}
コメント