从枚举中选择一个随机值?

如果我有这样的枚举:

public enum Letter {

A,

B,

C,

//...

}

随机挑选一个的最佳方法是什么?它不需要是生产质量的防弹产品,但是相当均匀的分配将是不错的选择。

我可以做这样的事情

private Letter randomLetter() {

int pick = new Random().nextInt(Letter.values().length);

return Letter.values()[pick];

}

但是有更好的方法吗?我觉得这是之前已解决的问题。

回答:

我唯一建议的是缓存结果,values()因为每个调用都会复制一个数组。另外,不要Random每次都创建一个。保持一个。除此之外,您在做什么都很好。所以:

public enum Letter {

A,

B,

C,

//...

private static final List<Letter> VALUES =

Collections.unmodifiableList(Arrays.asList(values()));

private static final int SIZE = VALUES.size();

private static final Random RANDOM = new Random();

public static Letter randomLetter() {

return VALUES.get(RANDOM.nextInt(SIZE));

}

}

以上是 从枚举中选择一个随机值? 的全部内容, 来源链接: utcz.com/qa/413041.html

回到顶部