F
- the concrete factory type which extends this interfacepublic interface ShortHashFactory<F extends ShortHashFactory<F>> extends HashContainerFactory<F>
short
keys.
Currently ShortHashFactory
allows to specify consecutive range of keys which could be
inserted into hash container - keys domain. This is a performance hint:
hash containers might, but aren't required to throw IllegalArgumentException
on inserting a key out of the keys domain.
By default, all keys are allowed (keys domain is a whole range of short
s, from
Short.MIN_VALUE
to Short.MAX_VALUE
.
For example, map keys or elements of the set could be unique IDs, counting from 1, thus it's guaranteed that these keys are positive. Or one specific key has a special meaning in the logic of your application. When you are sure that some keys range could never be put into hash container, it is recommended to configure corresponding factory, which extends this interface, with complement of that range as keys domain (or, alternatively, with that range as keys domain complement).
It's OK to specify keys domain which include some actually impossible keys, but you shouldn't leave a single valid key out of the domain. If the set of possible (impossible) keys consist of several ranges, and/or standalone keys, it is still recommended to specify the domain to "forbid" some impossible keys. For example, if possible keys are odd numbers, you should exclude one even number, zero:
factory = factory.withKeysDomainComplement((short) 0, (short) 0);
Modifier and Type | Method and Description |
---|---|
short |
getLowerKeyDomainBound()
Returns lower (inclusive) bound of keys domain.
|
short |
getUpperKeyDomainBound()
Returns upper (inclusive) bound of keys domain.
|
F |
withKeysDomain(short minPossibleKey,
short maxPossibleKey)
Returns a copy of this factory with keys domain set to the specified range.
|
F |
withKeysDomainComplement(short minImpossibleKey,
short maxImpossibleKey)
Returns a copy of this factory with keys domain set to the complement of the specified range.
|
getHashConfig, withHashConfig
getDefaultExpectedSize, withDefaultExpectedSize
short getLowerKeyDomainBound()
Default: Short.MIN_VALUE
.
short getUpperKeyDomainBound()
Default: Short.MAX_VALUE
.
F withKeysDomain(short minPossibleKey, short maxPossibleKey)
This is a performance hint: hash containers might, but aren't required to throw
IllegalArgumentException
on putting key out of the keys domain.
Example:
// only positive keys
factory = factory.withKeysDomain((short) 1, Short.MAX_VALUE);
minPossibleKey
- lower (inclusive) bound of the target keys domainmaxPossibleKey
- upper (inclusive) bound of the target keys domainIllegalArgumentException
- if minPossibleKey
is greater
than maxPossibleKey
F withKeysDomainComplement(short minImpossibleKey, short maxImpossibleKey)
This is a performance hint: hash containers might, but aren't required to throw
IllegalArgumentException
on putting key out of the keys domain.
This method is needed to specify keys domain that include both Short.MIN_VALUE
and Short.MAX_VALUE
, but with a "hole" somewhere in between. Providing a single
withKeysDomain(short, short)
method for this and "ordinary" keys domain application
is error-prone, because there is no way to distinguish intention (domain with a "hole")
and mistakenly reordered arguments while attempting to specify "ordinary" domain.
Example:
// any keys except 0
factory = factory.withKeysDomainComplement((short) 0, (short) 0);
minImpossibleKey
- upper (exclusive) bound of the target keys domainmaxImpossibleKey
- lower (exclusive) bound of the target keys domainIllegalArgumentException
- if minImpossibleKey
is greater
than maxImpossibleKey