Java:从HashMap <string,list <string =“” >>中的给定键返回随机值

时间:2019-03-02 12:24:19

标签: java list random hashmap

我正在尝试创建一种方法,当给定特定键时,该方法将从哈希图中的字符串列表中返回随机值。这是下面的代码。 (特别要看方法“ getRandomValue”,因为那是我遇到的困难)。我的问题是:如何在地图中查找键并从哈希图中返回随机值?

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

public class Values {
    private Map<String, List<String>> map;
    private static Random rand = new Random();

public void ValueStore() {
    this.map = new HashMap<String, List<String>>();
}

public boolean containsKey(String key) {
    if(map.containsKey(key)) {
        return true;
    } return false;

}

public void put(String key, List<String> value) {
    map = new HashMap<>();
    map.put(key, value);

}

public String getRandomValue(String key) {
    for (String key1 : map.keySet()) {
        if(map.containsKey(key)) {
        //not sure what to do here  
        }
    }
    return key;

}

}

1 个答案:

答案 0 :(得分:1)

首先在您的类中创建一个java.util.Random实例作为静态final字段,因为您的getRandomValue(String)方法每次调用时都需要使用它:

private static final Random RANDOM = new Random();

现在在您的方法中使用它:

public String getRandomValue(String key) {
    List<String> list = map.get(key);
    if (list == null) {
        return null; // or throw an exception
    }
    int randomIndex = RANDOM.nextInt(list.length());
    return list.get(randomIndex);
}

Random.nextInt(int x)方法将返回零(包括)和x(不包括)之间的值,这使其非常适合选择随机索引(因为List和数组索引始终从零开始)。