从枚举中选择一个随机值?
如果我有这样的枚举:
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