如何从java中的ENUM中随机选择两个字符串之间的字符串?

时间:2014-01-11 06:28:05

标签: java string random enums

我有两个字符串,如下所述 -

HelloWorld 
GoodBye

如何随机选择任何一个字符串?

下面是一个包含上述两个字符串的枚举,我应该使用以下枚举随机选择HelloWorldGoodBye

之间的任意一个字符串
public enum StringEnum {
    HelloDavid, HelloWorld, GoodBye;

    private static final Map<Integer, StringEnum> BY_CODE_MAP = new LinkedHashMap<Integer, StringEnum>();

    static {
    for (StringEnum rae : StringEnum.values()) {
        BY_CODE_MAP.put(rae.ordinal(), rae);
    }
    }

    public static String forCode(int code) {
    return BY_CODE_MAP.get(code).name();
    }
}

知道如何通过从枚举中获取字符串来有效地完成这项工作吗?

1 个答案:

答案 0 :(得分:1)

通常你会把你想要选择的所有元素放在一些数据结构中,比如数组,然后选择一个随机索引来获取。

在你的例子中,这看起来像这样:(我假设你实际上想要从所有枚举值中选择,你想要回到枚举值而不是String

int idx = new Random().nextInt(StringEnum.values().length);
StringEnum random = StringEnum.values()[idx];

另请参阅"Random element for string array"等问题,了解有关一般选择随机元素的更多信息。

对于实际上只在两个提到的元素之间进行选择的更简单的情况,您可以只检索一个随机整数并根据它是正数(包括0)还是负数来决定:

StringEnum random = (new Random().nextInt() < 0) ? 
                    StringEnum.HelloWorld : StringEnum.Goodbye;