HashMap java实现

本文详细解析了Java中HashMap的实现原理,包括桶数组、链表节点等关键概念,并通过示例展示了如何使用HashMap进行数据存储与检索。

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

1.hashMap类
package hashMap;

import java.util.LinkedList;

public class LvHashMap<K,V> {
LinkedList[] buckets;//桶数组, 元素类型是链表
int bucketCount;
LvHashMap(int bucketCount)
{
this.bucketCount = bucketCount;
buckets = new LinkedList[bucketCount];
for(int i = 0; i <= bucketCount - 1; i++)
{
LinkedList<Pair> l = new LinkedList<Pair>();
buckets[i] = l;
}
}

public void put(K key, V value)
{
int hashCode = key.hashCode();
int index = hashCode % bucketCount;
for(int i = 0; i <= buckets[index].size() - 1; i++)
{
if(((Pair) buckets[index].get(i)).getKey() == key)
{
((Pair) buckets[index].get(i)).setValue(value);
return;
}
}
buckets[index].add(new Pair(key, value));
}

public V get(K key)
{
int hashCode = key.hashCode();
int index = hashCode % bucketCount;
for(int i = 0; i <= buckets[index].size() - 1; i++)
{
if(((Pair) buckets[index].get(i)).getKey() == key)
{
return (V) ((Pair) buckets[index].get(i)).getValue();
}
}
return null;
}
}

2.链表节点实体类:
package hashMap;

public class Pair {
Object key;
Object value;
Pair(Object key, Object value)
{
this.key = key;
this.value = value;
}
public Object getKey() {
return key;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
}

3.测试类:
package hashMap;

public class HashTestDemo
{
public static void main(String[] args){
LvHashMap<String, String> hashMap = new LvHashMap<String, String>(32);
hashMap.put("key", "value");
hashMap.put("key", "value2");
System.out.println(hashMap.get("key"));

LvHashMap<String, Object> hashMap2 = new LvHashMap<String, Object>(32);
int[] array1 = {1, 2, 3, 4, 5, 6};
hashMap2.put("key", array1);
System.out.println(hashMap2.get("key") == array1);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值