javascript 实现类似Java中的hashmap

应用场景:

想把函数和函数对应的数据比较直观的存储起来

突然觉得Javascript中的object不够用了  所以自己仿了个java中的hashmap

key支持任何Javascript类型的数据 但是NaN Undefined 这种类型的没有实验

以下是源码

function hashmapfn(){
    		var p={
    			rkey:7,
    			size:0,
    			obj:{}
    		};

    		function getKey(key){
    			if(typeof key==‘object‘||typeof key===‘function‘) return key.__key;
    			return key;
    		}
    		function autokey(){
    			var key="diqye_$";
    			key+=p.rkey;
    			p.rkey++;
    			return key;
    		}
    		function setKey(key){
    			if(typeof key==‘object‘||typeof key===‘function‘) return key.__key=autokey();
    			return key;
    		}
    		function contains(key){
    			return p.obj[getKey(key)]!=null;
    		}
    		function put(key,val){
    			if(!contains(key))p.size++;
    			p.obj[setKey(key)]=val;
    		}
    		function get(key){
    			return p.obj[getKey(key)];
    		}
    		function remove(key){
    			if(contains(key)){
    				p.size--;
    				delete p.obj[getKey(key)];
    			}
    		}
    		function size(){
    			return p.size;
    		}
    		return {
    			contains:contains,
    			get:get,
    			put:put,
    			size:size,
    			remove:remove,
    			p:p
    		}

    	}

    	var k1=/   /g,k2=/  /g,k3=function(){},k4=‘key‘;
    	var hashmap=hashmapfn();
    	hashmap.put(k1,1);
    	hashmap.put(k2,2);
    	hashmap.put(k3,3);
    	hashmap.put(k4,4);
    	console.log(hashmap.get(k1));
    	console.log(hashmap.get(k2));
    	console.log(hashmap.get(k3));
    	console.log(hashmap.get(k4));
时间: 2024-08-04 22:14:41

javascript 实现类似Java中的hashmap的相关文章

java中的HashMap解析

这篇文章准备从源码的角度带大家分析一下java中的hashMap的原理,在了解源码之前,我们先根据自己的理解创建一个hashMap. 先说明一下创建的具体原理是这样的,所谓hashMap,必然是用hash方法来区分不同的key值.学过hash的都知道,我们解决hash冲突的一种方法就是使用散列和桶,首先确定所在的桶号,然后在桶里面逐个查找.其实我们也可以单纯使用数组实现map,使用散列是为了获得更高的查询效率. 要写自己的hashmap前,必须说明一下两个方法,就是hashcode()和equa

关于Java中的HashMap的深浅拷贝的测试与几点思考

0.前言 工作忙起来后,许久不看算法,竟然DFA敏感词算法都要看好一阵才能理解...真是和三阶魔方还原手法一样,田园将芜,非常可惜啊. 在DFA算法中,第一步是需要理解它的数据结构,在此基础上,涉及到一些Hashmap的赋值.这里的赋值非常有趣,三个Hashmap翻来覆去赋值,就解决了敏感词表的初始化. 里面都是属于下文中的Hashmap"浅拷贝",那么究竟Java中的Hashmap有哪些拷贝方法呢? 1.测试代码 HashMap hm_source = new HashMap();

LotusScript提升大字符串拼接函数(功能类似java中StringBuffer)

LotusScript提升大字符串拼接函数(功能类似java中StringBuffer),代码如下: Class StringBuffer Public count As Integer Private arr() As String Private size As Integer Private increment As Integer Sub New(Byval a As Integer) Redim arr(a) increment=a count=0 End Sub Sub add(By

Java中关于HashMap的使用和遍历(转)

Java中关于HashMap的使用和遍历 分类: 算法与数据结构2011-10-19 10:53 5345人阅读 评论(0) 收藏 举报 hashmapjavastringobjectiteratorlist 1:使用HashMap的一个简单例子 [java] view plaincopy package com.pb.collection; import java.util.HashMap; import java.util.Iterator; import java.util.Set; im

深入理解Java中的HashMap的实现原理

HashMap继承自抽象类AbstractMap,抽象类AbstractMap实现了Map接口.关系图例如以下所看到的: Java中的Map<key, value>接口同意我们将一个对象作为key.也就是能够用一个对象作为key去查找还有一个对象. 在我们探讨HashMap的实现原理之前,我们先自己实现了一个SimpleMap类,该类继承自AbstractMap类. 详细实现例如以下: import java.util.*; public class SimpleMap<K,V>

深入理解Java中的HashMap

HashMap继承自抽象类AbstractMap,抽象类AbstractMap实现了Map接口.关系图如下所示: import java.util.*; public class SimpleMap<K,V> extends AbstractMap<K,V> { //keys存储所有的键 private List<K> keys = new ArrayList<K>(); //values存储所有的值 private List<V> values

浅析java中的hashMap

?  HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实现类.虽然 HashMap 和 HashSet 实现的接口规范不同,但它们底层的 Hash 存储机制完全一样,甚至 HashSet 本身就采用 HashMap 来实现的. 通过 HashMap.HashSet 的源代码分析其 Hash 存储机制集合和引用 就像引用类型的数组一样,当我们把 Ja

Java中的HashMap和HashTable到底哪不同?

学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:456544752  我们一起学Java! HashMap和HashTable有什么不同?在面试和被面试的过程中,我问过也被问过这个问题,也见过了不少回答,今天决定写一写自己心目中的理想答案. 代码版本 JDK每一版本都在改进.本文讨论的HashMap和HashTable基于JDK 1.7.0_67.源码见这里 1. 时间 HashTable产生于JDK 1.1,而HashMap产生

Java中的HashMap和HashTable到底哪不同?(原文参考来自码农网)

HashMap和HashTable有什么不同?在面试和被面试的过程中,我问过也被问过这个问题,也见过了不少回答,今天决定写一写自己心目中的理想答案. 代码版本 JDK每一版本都在改进.本文讨论的HashMap和HashTable基于JDK 1.7.0_67.源码见这里 1. 时间 HashTable产生于JDK 1.1,而HashMap产生于JDK 1.2.从时间的维度上来看,HashMap要比HashTable出现得晚一些. 2. 作者 以下是HashTable的作者: 以下代码及注释来自ja