Java实现hash表,线性探测,二次探测,再哈希法,链表法

本文介绍如何使用Java实现哈希表,特别是采用链表法解决冲突问题。通过将每个数组元素作为链表节点,实现插入和删除操作。链表法的实现细节在文中有所阐述。
摘要由CSDN通过智能技术生成
不废话,直接上代码,关键地方有注释。

package test2;

class DataItem{
	private int key;
	public DataItem(int data){
		this.key = data;
	}
	public int getKey(){
		return this.key;
	}
}
public class HashTable {
	private DataItem[] dataArray;
	private int arraySize;
	private static DataItem noItem;
	
	static
	{
		noItem = new DataItem(-1);
	}
	
	public HashTable(int size){
		if(size > 0){
			arraySize = size;
			dataArray = new DataItem[arraySize];
		}
	}
	public void insertDataItem(int key){//假设hash表不满
		DataItem data = new DataItem(key);
		int hashCode = getHashCode(key);
		while(dataArray[hashCode] != null && dataArray[hashCode] != noItem){//
			++hashCode;				//线性探测,会产生聚集现象
			hashCode %= arraySize;
		}
		dataArray[hashCode] = data;
		
	}
	public void insertSecondaryDataItem(int key){
		DataItem data = new DataItem(key);
		int hashCode = getHashCode(key);
		int stepSize,i=1;
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值