我正在研究一个当前正在使用二次探测的HashSet类,并试图让它使用合并的散列。我对哈希很新,所以合并散列的概念对我来说非常困惑。目前我正在使用添加和删除方法。
添加:
public boolean add( AnyType x )
{
int currentPos = findPos( x );
if( isActive( array, currentPos ) )
return false;
if( array[ currentPos ] == null )
occupied++;
array[ currentPos ] = new HashEntry( x, true );
currentSize++;
modCount++;
if( occupied > array.length / 2 )
rehash( );
return true;
}
并删除:
public boolean remove( Object x )
{
int currentPos = findPos( x );
if( !isActive( array, currentPos ) )
return false;
array[ currentPos ].isActive = false;
currentSize--;
modCount++;
if( currentSize < array.length / 8 )
rehash( );
return true;
}
我理解在插入表格时,合并散列如何在纸上工作。但除此之外,我真的迷失了如何在Java中实现它。
任何帮助将不胜感激!谢谢!