public final class PrimeFinder
extends java.lang.Object
Choosing prime numbers as hash table capacities is a good idea to keep them working fast, particularly under hash table expansions.
However, JDK 1.2, JGL 3.1 and many other toolkits do nothing to keep capacities prime. This class provides efficient means to choose prime capacities.
Choosing a prime is O(log 300) (binary search in a list of 300 ints). Memory requirements: 1 KB static memory.
| Modifier and Type | Field and Description |
|---|---|
static int |
largestPrime
The largest prime this class can generate; currently equal to
2,004,663,929.
|
| Constructor and Description |
|---|
PrimeFinder() |
| Modifier and Type | Method and Description |
|---|---|
static int |
nextPrime(int desiredCapacity)
Returns a prime number which is
>= desiredCapacity
and very close to desiredCapacity (within 11% if
desiredCapacity >= 1000). |
public static final int largestPrime
nextPrime(int). Since the VM needs to reserve a few bytes
for internal overhead, new int[Integer.MAX_VALUE] fails with
an "exceeds VM limits" exception. So, we pick the second-largest
prime as the practical largest.public static int nextPrime(int desiredCapacity)
>= desiredCapacity
and very close to desiredCapacity (within 11% if
desiredCapacity >= 1000).desiredCapacity - the capacity desired by the user.