【发布时间】:2015-10-01 12:16:53
【问题描述】:
我需要随机选择一个低于给定最大值的非质数,并返回其所有因数。
我已经将所有非素数及其因数存储在 Map<Integer, Integer[]> 中,该Map<Integer, Integer[]> 在启动时计算一次。
以下是实现的想法:
public Pair<Integer, Integer[]> getNonPrimeAndFactors(int maximum)
{
//Randomly select a non-prime less than maximum
return new Pair<Integer, Integer[]>(nonPrime, factors.get(nonPrime));
}
我不确定要使用什么数据结构来随机选择 Map 中的密钥,同时仍然小于 maximum。选择一个小于最大值的随机数,然后向下迭代调用factors.hasKey(randomNumber--) 会有点废话。
我使用的是 Java 7 和 Guava,所以可以从 Google 的集合中挑选。
【问题讨论】:
标签: java collections guava