数据结构与算法:基于散列hashcode实现简单SimpleMap

本文介绍了一个使用Java实现的简易自定义Map结构。该结构利用LinkedList作为底层存储,并通过散列函数确定元素位置,实现了基本的put和get操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

package com.test;

import java.util.LinkedList;
import java.util.ListIterator;

public class SimpleMap {
	private static final int SZ = 997;

	private LinkedList[] ls = new LinkedList[SZ];
	
	public Object put(Object key,Object value){
		Object result = null;
		int index = key.hashCode() % SZ;
		if(index < 0) index = -index;
		if(ls[index] == null)
			ls[index] = new LinkedList();
		LinkedList l = ls[index];
		MapObj mapObj = new MapObj(key,value);
		ListIterator it = l.listIterator();
		boolean found = false;
		while(it.hasNext()){
			Object o = it.next();
			if(mapObj.equals(o)){
				result = ((MapObj)o).getValue();
				it.set(mapObj);
				found = true;
				break;
			}
		}
		if(!found){
			ls[index].add(mapObj);
		}
		return result;
	}
	
	public Object get(Object key){
		int index = key.hashCode() % SZ;
		if(index < 0) index = -index;
		if(ls[index] == null)
			return null;
		LinkedList l = ls[index];
		MapObj mapObj = new MapObj(key, null);
		ListIterator it = l.listIterator();
		while(it.hasNext()){
			Object o = it.next();
			if(mapObj.equals(o)){
				return ((MapObj)o).getValue();
			}
		}
		return null;
	}
	
	
	class MapObj {
		Object key;
		Object value;
		
		public MapObj(Object key,Object value){
			this.key = key;
			this.value = value;
		}

		public Object getKey() {
			return key;
		}

		public void setKey(Object key) {
			this.key = key;
		}

		public Object getValue() {
			return value;
		}

		public void setValue(Object value) {
			this.value = value;
		}

		public boolean equals(Object obj) {
			return key.equals(((MapObj)obj).key);
		}
		
	}

	
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值