package com.carrotsearch.hppc;
Hash order mixing strategy implementations should provide an, ideally,
random integer that is later XORed with the hash of a given key before
the slot lookup in associative arrays.
Why good hash mixing is important is explained in the
differences between hash
and scatter sets.
See Also:
/**
* Hash order mixing strategy implementations should provide an, ideally,
* random integer that is later XORed with the hash of a given key before
* the slot lookup in associative arrays.
*
* <p>
* Why good hash mixing is important is explained in the
* <a href="{@docRoot}/overview-summary.html#scattervshash">differences between hash
* and scatter sets</a>.
* </p>
*
* @see ObjectHashSet#hashKey
* @see ObjectObjectHashMap#hashKey
*
* @see HashOrderMixing
*/
public interface HashOrderMixingStrategy extends Cloneable {
A new key mixer value. The value can be derived from the new buffer size of the
container, but preferably should be random and unique.
Params: - newContainerBufferSize –
/**
* A new key mixer value. The value can be derived from the new buffer size of the
* container, but preferably should be random and unique.
*
* @param newContainerBufferSize
*/
public int newKeyMixer(int newContainerBufferSize);
Returns: Return a clone of this strategy. This should use a different mixing
because cloned containers should have a different hash ordering.
/**
* @return Return a clone of this strategy. This should use a different mixing
* because cloned containers should have a different hash ordering.
*/
public HashOrderMixingStrategy clone();
}