【问题标题】:How to randomly select a string between two strings from ENUM in java?java - 如何从Java中的ENUM中随机选择两个字符串之间的字符串?
【发布时间】:2014-01-30 07:29:41
【问题描述】:

我有下面提到的两个字符串 -

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();
    }
}

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

【问题讨论】:

  • 我认为您并没有真正尝试查看枚举文档

标签: java string random enums


【解决方案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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    相关资源
    最近更新 更多