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);
}
}
分享到:
相关推荐
Java语言使用hashmap实现向购物车添加删除修改商品,显示商品信息
用数据结构的思想实现java中的类hashmap
HashMap、HashTable和HashSet是Java中常用的数据结构,它们的底层实现原理以及区别如下:HashMap底层实现原理: HashMap基于哈希表(HashTable)实现,它通过散列算法将键值对映射到数组中。在HashMap中,每个键值对...
NULL 博文链接:https://zhangshixi.iteye.com/blog/672697
Java8之后新增挺多新东西,接下来通过本文给大家介绍Java8 HashMap的实现原理分析,对java8 hashmap实现原理相关知识感兴趣的朋友一起学习吧
HashMap重写实现 轻量级实现 使用自定义的轻量对象HashObjectMap替代jdk的HahMap HashMap里的Entry占用较大内存,可以用自己实现的轻量级容器替换,步骤如下: 1、 缓存的对象需要继承BaseHashObject /** * 这个类...
HashMap和HashSet是Java Collection Framework的两个重要成员,其中HashMap是Map接口的常用实现类,HashSet是Set接口的常用实现类。虽然HashMap和HashSet实现的接口规范不同,但它们底层的Hash存储机制完全一样,...
用js代码实现java中hashmap 的所有功能
基于HashMap的用户标签处理兼Java中HashMap实现原理研究
HashMap源码实现红黑树添加元素和删除元素
HashMap是Java中非常常用的一种数据结构,它实现了Map接口,用于存储键值对。HashMap内部使用哈希表来实现,通过将键映射到哈希表中的一个位置来快速查找和插入元素。 HashMap的主要特点是: 非线程安全:如果多个...
·基于JDK 11,将Java8、Java9、Java10、Java11新特性一网打尽 ·课程中,Eclipse和IDEA这两种企业一线开发环境都使用到了 3.技术讲解更深入、更全面: ·课程共30天,715个知识视频小节,涉及主流Java使用的...
主要介绍了深入解析java HashMap实现原理的相关资料,需要的朋友可以参考下
用hashmap结构将字典文件中的词条装入内存,并基于该结构进行查询
主要介绍了在Java8与Java7中HashMap源码实现的对比,内容包括HashMap 的原理简单介绍、结合源码在Java7中是如何解决hash冲突的以及优缺点,结合源码以及在Java8中如何解决hash冲突,balance tree相关源码介绍,需要的...
JAVA实现基于知识图谱的古诗词智能问答 使用java+ssm+springboot+maven+react+mysql 1、前端接收问句,发送至后端(涉及CSS、ajax通信) 2、对问句进行分词,每个单词标注词性(涉及用户字典) 3、对问句进行抽象...
Java利用ConcurrentHashMap实现本地缓存demo; 基本功能有缓存有效期、缓存最大数、缓存存入记录、清理线程、过期算法删除缓存、LRU算法删除、获取缓存值等功能。 复制到本地项目的时候,记得改包路径哦~
java 集合和泛型 1. Map接口 2. HashMap底层实现 3. Hash数据结构和算法 4. 红黑树数据结构和算法
Java集合,HashMap底层实现和原理(1.7数组+链表与1.8+的数组+链表+红黑树) 数组和链表.pdf
java Map实现的cache manager,定时清除缓存里面的值,使数据一致保持最新