簡體   English   中英

如何在Java中從ENUM的兩個字符串之間隨機選擇一個字符串?

[英]How to randomly select a string between two strings from ENUM in java?

我有以下兩個字符串-

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

知道通過從枚舉中獲取字符串如何有效地完成此工作嗎?

通常,您會將所有要從中選擇的元素放入某個數據結構(如數組)中,然后選擇一個隨機索引進行提取。

在您的示例中,看起來可能是這樣的:(我假設您實際上是想從所有枚舉值中進行選擇,並且想要返回該枚舉值而不是String

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

另請參閱“字符串數組的隨機元素”之類的問題 ,以獲取有關通常選擇隨機元素的更多信息。

對於只在上述兩個元素之間進行選擇的簡單情況,您可以檢索一個隨機整數,然后根據它是正數(包括0)還是負數來確定:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM