class Map
constructor : ->
@entry = {}
@count = 0 size : ->
return @count isEmpty : ->
return @count == 0 containsKey : (key) ->
if @isEmpty()
return false
return @entry.hasOwnProperty key containsValue : (val)->
if @isEmpty()
return false
for key,_val of @entry
if _val == val
return true
return false get : (key)->
if @isEmpty()
return null
if @containsKey key
return @entry[key]
return null put : (key, val)->
if !@entry.hasOwnProperty key
@count += 1;
@entry[key] = val
return @ remove : (key)->
if @isEmpty()
return false
if @containsKey key
delete @entry[key]
@count -= 1
return true
return false putAll : (map)->
if !map instanceof Map
return false
entry = map.entry
for key,val of entry
@put(key, val)
return true clear : ->
@entry = {}
@count = 0
return @ values : ->
vals = []
for key,val of @entry
vals.push val
return vals keySet : ->
keys = []
for key,val of @entry
keys.push key
return keys entrySet : ->
return @entry toString : ->
if typeof JSON == "undefined"
throw new Error "JSON object is not supported. Please check your browser version (IE8+, Firefox11+, Chrome19+, Safari5.1+)."
return JSON.stringify @entry valueOf : ->
return @toString()

使用coffeescript编译后生成代码:

(function() {
var Map;
var __hasProp = Object.prototype.hasOwnProperty;
Map = function() {
this.entry = {};
this.count = 0;
return this;
};
Map.prototype.size = function() {
return this.count;
};
Map.prototype.isEmpty = function() {
return this.count === 0;
};
Map.prototype.containsKey = function(key) {
if (this.isEmpty()) {
return false;
}
return this.entry.hasOwnProperty(key);
};
Map.prototype.containsValue = function(val) {
var _a, _val, key;
if (this.isEmpty()) {
return false;
}
_a = this.entry;
for (key in _a) {
if (!__hasProp.call(_a, key)) continue;
_val = _a[key];
if (_val === val) {
return true;
}
}
return false;
};
Map.prototype.get = function(key) {
if (this.isEmpty()) {
return null;
}
if (this.containsKey(key)) {
return this.entry[key];
}
return null;
};
Map.prototype.put = function(key, val) {
if (!this.entry.hasOwnProperty(key)) {
this.count += 1;
};
this.entry[key] = val;
return this;
};
Map.prototype.remove = function(key) {
if (this.isEmpty()) {
return false;
}
if (this.containsKey(key)) {
delete this.entry[key];
this.count -= 1;
return true;
}
return false;
};
Map.prototype.putAll = function(map) {
var _a, entry, key, val;
if (!map instanceof Map) {
return false;
}
entry = map.entry;
_a = entry;
for (key in _a) {
if (!__hasProp.call(_a, key)) continue;
val = _a[key];
this.put(key, val);
}
return true;
};
Map.prototype.clear = function() {
this.entry = {};
this.count = 0;
return this;
};
Map.prototype.values = function() {
var _a, key, val, vals;
vals = [];
_a = this.entry;
for (key in _a) {
if (!__hasProp.call(_a, key)) continue;
val = _a[key];
vals.push(val);
}
return vals;
};
Map.prototype.keySet = function() {
var _a, key, keys, val;
keys = [];
_a = this.entry;
for (key in _a) {
if (!__hasProp.call(_a, key)) continue;
val = _a[key];
keys.push(key);
}
return keys;
};
Map.prototype.entrySet = function() {
return this.entry;
};
Map.prototype.toString = function() {
if (typeof JSON === "undefined") {
throw new Error("JSON object is not supported. Please check your browser version (IE8+, Firefox11+, Chrome19+, Safari5.1+).");
}
return JSON.stringify(this.entry);
};
Map.prototype.valueOf = function() {
return this.toString();
};
})();

用coffeescript实现类java的Map类的更多相关文章

  1. 探究Java中Map类

    Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象.       Map的接口       Map---实现Map       Map.Entry--Map的内部 ...

  2. [转] JAVA的Random类

    Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要 ...

  3. JAVA基础--常用类 String,StringBuffer, 基础数据类型包装类, Math类, Enum类

    字符串相关类: String, StringBuffer String类为不可变的字符序列 String s1="hello"; String s2="hello&quo ...

  4. Java之File类

    一.初见File类 java.io.File类代表系统中的文件(文件或目录) 常用构造方法 File(String pathname) File(String parent, String child ...

  5. Java Arrays工具类的使用

    Arrays 类 java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的.具有以下功能: 给数组赋值:通过fill方法. 对数组排序:通过sort方法,按升序. 比较数组:通过 ...

  6. 关于JAVA的Random类的冷知识(转自菜鸟V)

    JAVA的Random类(转) Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基 ...

  7. Java.util.Math类--数学相关的工具类

    Math类--数学相关的工具类 java.util.Math类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作. public static double abs(double ...

  8. java:常用类(包装类,equals和==的比较,Date,java.lang.String中常用方法,枚举enum)

    *包装类: 将基本类型封装成类,其中包含属性和方法以方便对象操作. *byte---->Byte *short--->Short *long--->Long *float---> ...

  9. Java日期处理类的相关使用

    java常用类-java日期处理类 Date类 Date类是jdk给我们提高的标准日期类,在java.util包下: 示例代码: import java.util.Date; public class ...

随机推荐

  1. [Leetcode Week10]Minimum Time Difference

    Minimum Time Difference 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/minimum-time-difference/desc ...

  2. (十二)进一步掌握STVD/COSMIC

    如何分配变量到指定的地址 举例:unsigned char temp_A@0x00; //定义无符号变量temp_A,强制其地址为0x00unsigned char temp_B@0x100; //定 ...

  3. GLE api

    # -*- coding: utf-8 -*-# @Time : 2018/03/09 12:25# @Author : cxa# @File : gle.py# @Software: PyCharm ...

  4. 【POI2017||bzoj4726】Sabota?

    上学期putsnan过了一次,这学期认真写了一遍…… #include<bits/stdc++.h> #define N 500010 using namespace std; ]; ,n ...

  5. golang的各种打印

    golang的打印方法太特么多了,下面就来区分一下之间的差异 package main import ( "fmt" "os" ) func main() { ...

  6. python几个重要的函数(lambda,filter,reduce,map,zip)

    一.匿名函数lambda lambda argument1,argument2,...argumentN :expression using arguments 1.lambda是一个表达式,而不是一 ...

  7. [ 总结 ] nginx 编译参数中文详解

    贴出来,方便查找和学习. nginx 编译参数: --prefix=PATH    指向安装目录--sbin-path=PATH    指向(执行)程序文件--conf-path=PATH    指向 ...

  8. heightCharts改变图表内图标的样式:链接外部图片

    series: [{ name: '东京', marker: { symbol: 'url(https://www.highcharts.com/demo/gfx/sun.png)'     //链接 ...

  9. java使用maven项目(二)分模块开发

    1       整合ssh框架 1.1     依赖传递 只添加了一个struts2-core依赖,发现项目中出现了很多jar, 这种情况 叫 依赖传递 1.2     依赖版本冲突的解决 1.  第 ...

  10. ionic 之环境的搭建

    在ionic的学习中,首先要做的就是环境的搭建,接下来我对从一开始环境的搭建做了记录,以及过程中遇到的问题. 1.安装环境 1.1 安装Node.js Node.js建议安装最新版本,下载地址:htt ...