我有两个字符串,如下所述 -
HelloWorld
GoodBye
如何随机选择任何一个字符串?
下面是一个包含上述两个字符串的枚举,我应该使用以下枚举随机选择HelloWorld
和GoodBye
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();
}
}
知道如何通过从枚举中获取字符串来有效地完成这项工作吗?
答案 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;