`

Javascript 封装 HashMap

阅读更多

 

function HashMap()
{
    /** Map 大小 **/
    var size = 0;
    /** 对象 **/
    var entry = new Object();
    
    /** 存 **/
    this.put = function (key , value)
    {
        if(!this.containsKey(key))
        {
            size ++ ;
        }
        entry[key] = value;
    }
    
    /** 取 **/
    this.get = function (key)
    {
        return this.containsKey(key) ? entry[key] : null;
    }
    
    /** 删除 **/
    this.remove = function ( key )
    {
        if( this.containsKey(key) && ( delete entry[key] ) )
        {
            size --;
        }
    }
    
    /** 是否包含 Key **/
    this.containsKey = function ( key )
    {
        return (key in entry);
    }
    
    /** 是否包含 Value **/
    this.containsValue = function ( value )
    {
        for(var prop in entry)
        {
            if(entry[prop] == value)
            {
                return true;
            }
        }
        return false;
    }
    
    /** 所有 Value **/
    this.values = function ()
    {
        var values = new Array();
        for(var prop in entry)
        {
            values.push(entry[prop]);
        }
        return values;
    }
    
    /** 所有 Key **/
    this.keys = function ()
    {
        var keys = new Array();
        for(var prop in entry)
        {
            keys.push(prop);
        }
        return keys;
    }
    
    /** Map Size **/
    this.size = function ()
    {
        return size;
    }
    
    /* 清空 */
    this.clear = function ()
    {
        size = 0;
        entry = new Object();
    }
}

var map = new HashMap();

/*
map.put("A","1");
map.put("B","2");
map.put("A","5");
map.put("C","3");
map.put("A","4");
*/

/*
alert(map.containsKey("XX"));
alert(map.size());
alert(map.get("A"));
alert(map.get("XX"));
map.remove("A");
alert(map.size());
alert(map.get("A"));
*/

/** 同时也可以把对象作为 Key **/
/*
var arrayKey = new Array("1","2","3","4");
var arrayValue = new Array("A","B","C","D");
map.put(arrayKey,arrayValue);
var value = map.get(arrayKey);
for(var i = 0 ; i < value.length ; i++)
{
    //alert(value[i]);
}
*/
/** 把对象做为Key时 ,自动调用了该对象的 toString() 方法 其实最终还是以String对象为Key**/

/** 如果是自定义对象 那自己得重写 toString() 方法 否则 . 就是下面的结果 **/

function MyObject(name)
{
    this.name = name;
}

/**
function MyObject(name)
{
    this.name = name;
    
    this.toString = function ()
    {
        return this.name;
    }
}
**/
var object1 = new MyObject("小张");
var object2 = new MyObject("小名");

map.put(object1,"小张");
map.put(object2,"小名");
alert(map.get(object1));
alert(map.get(object2));
map.remove("xxxxx");
alert(map.size());

/** 运行结果 小名 小名 size = 1 **/

/** 如果改成复写toString()方法的对象 , 效果就完全不一样了 **/
 

 

分享到:
评论
1 楼 ruler_internet 2012-03-01  
非常不错,这个方法可行

相关推荐

    itwill_java_oracle_javascript-master_java_javascript_

    此外,Java还涉及到异常处理、集合框架(如ArrayList、LinkedList、HashMap等)、IO流、多线程、网络编程以及Swing或JavaFX这样的GUI(图形用户界面)工具包。 【Oracle数据库管理】: Oracle是世界上最流行的商业...

    json对象封装及解析所需的JAR包

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web服务和应用程序之间的数据传输,因为它易于阅读和编写,同时也易于机器解析和生成。在Java中,处理JSON对象通常需要依赖特定的库,本...

    javascript表单验证以及创建集合

    javascript帮助类 可以实现创建ArrayList,HashMap集合 各种表单验证方式都封装在里面咯 包括邮箱,时间,url,double,未定义,function,中文,英文,邮政编码 ,电话,移动电话,zip格式,是否空

    sourceCode_java.rar_javascript

    2. **类与对象**:理解面向对象编程的基本概念,包括类的定义、对象的创建、封装、继承和多态。 3. **异常处理**:学习如何使用try-catch语句来捕获和处理程序运行时可能出现的错误。 4. **集合框架**:熟悉...

    Java-learning-courseware.rar_javascript_learning

    3. **集合框架**:List、Set、Queue和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类的使用。 4. **异常处理**:理解和使用try-catch语句块来捕获和处理程序运行时可能出现的错误。 5. **输入/输出...

    临时资源java、javascript相关

    - **基础概念**:理解Java的面向对象特性,如封装、继承和多态。熟悉类、对象、接口和抽象类的区别。 - **内存管理**:掌握Java内存模型(JVM),包括堆、栈、方法区和本地方法栈。了解垃圾回收机制和内存泄漏的...

    Java就业培训教程+JavaScript网页开发体验式学习教程

    3. **类与对象**:深入讲解面向对象编程的三大特性——封装、继承和多态,以及类、对象、构造器的使用。 4. **集合框架**:包括ArrayList、LinkedList、HashMap等常用集合的使用,以及集合接口和泛型的理解。 5. **...

    HTML、JavaScript与Java三合一最新培训教程

    - **集合框架**:ArrayList、HashMap等容器的使用。 - **Java Applet开发** - **Applet生命周期**:从加载到卸载的各个阶段及其对应的方法。 - **绘图基础**:使用`Graphics`类进行基本图形绘制。 - **事件监听...

    mvcDemo-master2.rar

    总结来说,这个项目是一个使用Spring MVC和MyBatis的SSM框架实现的Web应用,特点是使用HashMap代替了传统实体类进行数据处理,并且Service和DAO层已经进行了封装,简化了前后端交互,前端使用AJAX技术进行异步通信。...

    javascript面向对象之二 命名空间

    最简单创建命名空间的方法: 代码如下: var java = {}; java.util = {}; //这样就创建成功了命名空间:java.util //我们可以在java.util下面加类(函数),属性,或对象 ... //显示结果:java.util.HashMap //封装创建命

    Java以及部分js课件

    4. **数组与集合框架**:理解一维和多维数组的概念,以及ArrayList、LinkedList、HashSet、HashMap等集合类的使用,了解它们的特点和适用场景。 5. **IO流**:学习文件操作,包括输入输出流的分类,缓冲流的使用,...

    leetcode-js:我可以参考过去使用JavaScript解决类似Leetcode的问题的解决方案的一种方法

    - 哈希表:JavaScript对象可作为简单的哈希表,复杂情况可能需要自定义HashMap。 4. **算法** - 排序算法:JavaScript内置的sort方法是简单排序,但LeetCode中经常需要快速排序、归并排序、堆排序等高级排序算法...

    项目学习参考

    2. **面向对象编程**: Java强调封装、继承和多态三大特性,通过类和对象的创建来实现程序设计。实例中可能包含创建和使用类的例子,以及继承和多态的应用。 3. **异常处理**: Java有强大的异常处理机制,通过try-...

    java 学习资料

    Java的基础包括类、对象、封装、继承、多态等面向对象概念,以及异常处理、集合框架(如ArrayList和HashMap)和IO流。深入学习Java,你需要掌握反射、注解、并发编程、JVM内存模型以及垃圾回收机制。 Spring框架是...

    java学习资料

    此外,熟悉异常处理、集合框架(如ArrayList、LinkedList、HashMap等)以及IO流操作也是必备技能。 对于“GIS瘦客户端开发”,这指的是使用Java技术进行地理信息系统(GIS)的应用开发,而“瘦客户端”通常指的是轻...

    传智播客 入学考试题及个人答案(11题)

    面向对象特性则涉及类、对象、封装、继承、多态等概念,这是Java的核心所在。异常处理是Java程序健壮性的保障,通常用try-catch-finally语句进行捕获和处理。集合框架如ArrayList、LinkedList、HashMap等是存储和...

    CmpE273-HW1:JavaScript和Java刷新器

    5. **集合框架**:Java提供丰富的集合类,如ArrayList、LinkedList、HashMap等,用于存储和操作数据。 6. **IO流**:Java的IO流系统用于读写文件、网络通信等,分为字节流和字符流。 7. **多线程**:Java内置了多...

    json与bean,array,list,map,简单类型之间的封装、解析

    在Java编程中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据传输。Gson是Google提供的一个Java库,能够方便地将Java对象转换为JSON字符串,同时也能够将JSON文本解析成等效的...

    java笔试面试题汇总 基础版 最新 最全

    - **封装类**:为原始数据类型提供封装,例如`Integer`封装了`int`,`Double`封装了`double`。这些封装类提供了额外的方法来操作数据。 - **区别**:原始数据类型在内存中直接存储值,而封装类存储的是指向该值的...

    CoreJava_day05_all.zip_JavaScript/JQuery_Java_

    4. **集合框架**:如ArrayList、LinkedList、HashMap等,提供了丰富的数据结构和算法。 5. **多线程**:支持并发编程,提高了程序的执行效率。 6. **IO流**:处理输入输出,如读写文件、网络通信等。 7. **反射**:...

Global site tag (gtag.js) - Google Analytics