`
jsczxy2
  • 浏览: 1277699 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

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

阅读更多

 

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);
		}
		
	}

	
	
}
分享到:
评论

相关推荐

    Java理论与实践:hashCode()和equals()方法

    本文介绍了Java语言不直接支持关联数组,可以使用任何对象作为一个索引的数组,但在根Object类中使用 hashCode()方法明确表示...通过统一定义equals()和hashCode(),可以提升类作为基于散列的集合中的关键字的使用性。

    散列算法与散列码(实例讲解)

    散列算法与散列码 散列算法是一种常用的数据存储和检索技术,它通过将输入数据转换为固定长度的字符串来标识和索引数据。散列码是散列算法的输出结果,它是一个固定长度的字符串,用于标识和索引数据。 在Java中...

    2021最新版数据结构与算法面试题手册.docx

    数据结构与算法是计算机科学的基础,对于任何IT行业的专业人员来说,掌握这些知识都是至关重要的。面试中,面试官常常会考察候选人在数据结构与算法方面的理解和应用能力。以下是基于提供的部分内容,对相关知识点的...

    数据结构与算法1

    数据结构与算法是计算机科学的基础,对于理解和优化程序性能至关重要。在Java中,数据结构的运用体现在各种集合框架中,如Map接口。Map是存储键值对的数据结构,提供了keySet()和entrySet()两个方法来遍历其内容。 ...

    深入 HashCode 方法~

    - 哈希表是一种基于数组的数据结构,通过 `HashCode` 将元素映射到数组的一个位置上。 - 使用 `HashCode` 计算出的索引值可以快速地访问到数组中的某个位置,从而实现快速查找。 2. **HashCode 在哈希表中的应用*...

    hashcode和equals方法

    equals()和hashcode()这两个方法都是从object类中继承过来的。当String 、Math、还有Integer、Double。。。。等这些封装类在使用equals()方法时,已经覆盖了object类的equals()方法.

    2021最新版数据结构与算法面试题手册 1.pdf

    ### Java工程师面试知识...以上知识点的掌握对于应聘Java工程师来说是基础且非常重要的,因为这些问题涉及了Java集合框架、哈希原理、算法设计和二叉树遍历等多个方面,可以有效地考察面试者的编程和数据结构理解能力。

    hashcode:Google HashCode只是为了好玩

    Google HashCode只是为了好玩 2021年在线资格 我们首次参与了解决哈希码2021的在线认证问题"Traffic signaling"工作。 我们的结果是8,446,233点,而最高分是10,586,135 。 我们希望改善结果,甚至安排我们之间的小...

    数据结构学习

    通过本课程的学习,学生将能够掌握各种排序算法和数据结构的代码实现方法,并学会如何分析和解决排序算法问题。此外,学生还将了解不同数据结构的特点以及它们在实际问题中的应用场景。 #### 二、排序算法概述 ...

    DSA-HASHING:Java的散列问题

    标题"DSA-HASHING:Java的散列问题"可能是指在Java中使用散列算法进行数据结构和算法(DSA)的设计与分析时遇到的问题。在Java中,散列通常涉及到`java.util.HashMap`类,它是Java集合框架的一部分,提供了一种高效的...

    javascript中实现兼容JAVA的hashCode算法代码分享

    在java中一个hashCode算法,可以用来计算一个字符串的hash值,今天一个朋友突然问俺能不能在js中计算hashCode,要求和java的hashCode计算结果一样。 对于java的hashCode,以前到现在也一直没有了解过其算法,不过...

    数据结构(Java语言描述) 案例04 一元多项式的表示及运算.docx

    本案例聚焦于使用Java语言描述的一元多项式的表示与运算,主要涵盖了单链表结构的应用,以及多项式加法操作的实现。以下是相关知识点的详细说明: 4.1 多项式的表示: 一元n次多项式可以表示为一个多项式序列,每个...

    HashCode相同equals不同的2位字符集合算法

    标题提到的"HashCode相同equals不同的2位字符集合算法"涉及到的是一个特定场景:两个对象可能具有相同的哈希码(hashCode),但并不意味着它们相等(equals返回true)。这个问题在处理自定义类对象时尤为关键,特别...

    Java容器集合(equals 和 hashCode+基础数据结构+ArrayList+Vector和LinkedList)

    Java容器集合(equals和hashCode+基础数据结构+ArrayList+Vector和LinkedList) Java容器集合是Java中的一种基础数据结构,用于存储和管理数据。其中,equals和hashCode方法是Java容器集合中两个非常重要的方法,...

    hashcode的作用

    - 在Java中,`HashMap` 和 `Hashtable` 这样的散列表数据结构使用对象的 `hashCode()` 来快速定位数据。这是因为哈希值能够帮助这些数据结构确定对象应该存储在哪一个位置,从而极大地提高了查找效率。 - 如果两个...

    Java基于散列表实现的(无序)词典结构(算法源码)

    * 基于散列表实现的(无序)词典结构 * 采用分离链策略解决冲突 */ package dsa; public class Dictionary_HashTable implements Dictionary { private Dictionary[] A;//桶数组,每个桶本身也是一个(基于...

    HashCode的用法详解

    hashCode 是一种用于查找和排序的机制,在数据结构中 plays a crucial role。下面我们将对 hashCode 的用法进行详细的解释。 hashCode 的作用 hashCode 的主要作用是用于查找和排序。在查找和排序的过程中,我们...

Global site tag (gtag.js) - Google Analytics