// JavaScript Document
function HashTable(){
    this._hash={};
    this._count=0;
    
    
    /**
    *添加或者更新key
    */
    this.put=function(key,value){
        if(this._hash.hasOwnProperty(key)){
            this._hash[key]=value;
            return true;
        }else{
                this._hash[key]=value;
                this._count++;
                return true;
            }
    }
    
    
    /**
    *获取key指定的值
    */
    this.get=function(key){
        if(this.containsKey(key))
            return this._hash[key];
    }    
    
    
    /**
    *获取元素个数
    */    
    this.size=function(){
        return this._count;
    }
    
    
    /**
    *检查是否为空
    */
    this.isEmpty=function(){
        if(this._count<=0)
            return true;
        else return false;
    }
    
    
    /**
    *检查是否包含指定的key
    */
    this.containsKey=function(){
            return this._hash.hasOwnPropetry(key);
    }
    
    
    /**
    *检查是否包含指定的value
    */
    this.containsValue=function(){
        for(var strKey in this._hash)
            if(this._hash[strKey]==value)
                return true;                
        return false;
    }
    
    
    /**
    *删除一个key
    */
    this.remove=function(key){
            delete this._hash[key];
            this._count--;
    }
    
    
    /**
    *删除所有的key
    */
    this.clear=function(){
        this._hash={};
        this._count=0;
    }
    
    
    /**
    *从HashTable中获取Key的集合,以数组的形式返回
    */
    this.keySet=function(){
        var arrKeySet= new Array();
        var index=0;
        for(var strKey in this._hash){
            arrKeySet[index++]=strKey;
        }
        return (arrKeySet.length==0)?null:arrKeySet;
    }
    
    
    /**
    *从HashTable中获取Key的集合,以数组的形式返回
    */
    this.values=function(){
        var arrValues= new Array();
        var index=0;
        for(var strKey in this._hash){
            arrValues[index++]=this._hash[strKey];
        }
        return (arrValues.length==0)?null:arrValues;
    }
}

js 定义hash类的更多相关文章

  1. js定义类和方法

    js中定义一个类 //定义一个user类 var user = function(){ //类中的属性 var age; //设置age的值 var setAge = function(age){ t ...

  2. JS定义类的六种方式详解

    转载自: http://www.jb51.net/article/84089.htm 在前端开发中,经常需要定义JS类.那么在JavaScript中,定义类的方式有几种,分别是什么呢?本文就JS定义类 ...

  3. js定义类的方法

    ECMAScript6已经支持了class,但之前版本都不支持类,但是可以通过一些方法来模拟类. js中的类,既是重点,也是难点,很多时候都感觉模棱两可. 首先强调一下js中很重要的3个知识点:thi ...

  4. 通过寄生组合式继承创建js的异常类

    最近项目中在做js的统一的异常处理,需要自定义异常类.理想的设计方案为:自定义一个异常错误类BaseError,继承自Error,然后再自定义若干个系统异常,例如用户取消异常.表单异常.网络异常,这些 ...

  5. NodeJs中类定义及类使用

    1.首先定义类Point,文件名为point.class.js: // 定义类 class Point { //构造函数 constructor(x, y) { this.x = x;//类中变量 t ...

  6. js中的类

    概述 经典的老书害人啊,全是讨论怎么解决javascript里面用函数形式定义类的坑.结果es2015直接用class关键字解决了所有问题.虽然class关键字没有什么新东西,只是js现有继承结构的语 ...

  7. 【JS】#001 JS定义对象写法(原型、JSON方式)

    下面主要写两种 JS 定义对象的 常用写法 写法1:[很像面向对象语言中的写法] function zhongxia(age) { this.age = age; } zhongxia.name = ...

  8. js中有关类、对象的增强函数

    javascript中继承的实现 基础实现 function Range(from,to){ this.from =from; this.to =to; } Range.prototype = { i ...

  9. js常用工具类.

    一些js的工具类 复制代码 /** * Created by sevennight on 15-1-31. * js常用工具类 */ /** * 方法作用:[格式化时间] * 使用方法 * 示例: * ...

随机推荐

  1. CSDN开源夏令营 基于Compiz的switcher插件设计与实现之前期准备 git的简单使用

    因为项目的代码须要上传到git上.就须要学习一下git的使用了. 我初步接触了一下git,准备用此帖来记录git的学习,此帖会随着我对git了解的深入动态更新. 一.GIT的介绍 1.概述:git是一 ...

  2. 第三篇:Logstash 安装配置

    Logstash 简介: Logstash 是一个实时数据收集引擎,可收集各类型数据并对其进行分析,过滤和归纳.按照自己条件分析过滤出符合数据导入到可视化界面.Logstash 建议使用java1.8 ...

  3. pip安装错误,用镜像

    Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'Connec ...

  4. Sqlserver------SQLServer2008R2中新增用户并设定表的访问权限

    在进行项目对接时,有时候处于系统安全性考虑,我们需要设置数据库的访问权限,这个时候,我们可以新增一个用户,然后设定用户的访问权限,具体步骤如下: 1,  新建登录对象 2,  点击用户映射 3,  操 ...

  5. Android开发 adb命令提示:Permission denied (转)

    如题:模拟器版本->android 7.1.1 遇到这样的情况把模拟器root一下就好了:su root =============2017年4月3日20:57:33============== ...

  6. 使用Highcharts实现柱状图展示

    第一步 新建页面line.html,引入HighCharts核心js文件 <script type="text/javascript" src="../../js/ ...

  7. ASP.NET动态网站制作(14)-- CSS3

    前言:这节课主要讲解CSS之前没有讲到过的知识点以及CSS3的一些内容. 内容: 1.内容参考博文:http://www.cnblogs.com/ruanmou/p/4832214.html. 后记: ...

  8. Lumen开发:结合Redis实现消息队列(1)

    1.简介 Lumen队列服务为各种不同的后台队列提供了统一的API.队列允许你推迟耗时任务(例如发送邮件)的执行,从而大幅提高web请求速度. 1.1 配置 .env文件的QUEUE_DRIVER选项 ...

  9. 爬虫入门【1】urllib.request库用法简介

    urlopen方法 打开指定的URL urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, ca ...

  10. Intellij IDEA打开多项目窗口

    我版本是2016.02.04 其他版本可能不一样的设置