我有一个 Collection<Obj>
我如何从中得到一个随机的 Obj
?
我检查了 文档,似乎没有办法,因为迭代器是访问集合的唯一方法。我是否必须遍历它才能获得随机对象!?
原文由 Secret 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个 Collection<Obj>
我如何从中得到一个随机的 Obj
?
我检查了 文档,似乎没有办法,因为迭代器是访问集合的唯一方法。我是否必须遍历它才能获得随机对象!?
原文由 Secret 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 Lambdas,您可以非常快速地完成此操作并处理 Collection 为空的情况。
public static <E> Optional<E> getRandom (Collection<E> e) {
return e.stream()
.skip((int) (e.size() * Math.random()))
.findFirst();
}
原文由 Witold Kaczurba 发布,翻译遵循 CC BY-SA 3.0 许可协议
4 回答1.4k 阅读✓ 已解决
4 回答1.2k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答737 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
最有效的方法是只迭代到你需要的程度。