用coffeescript实现类java的Map类
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类的更多相关文章
- 探究Java中Map类
Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象. Map的接口 Map---实现Map Map.Entry--Map的内部 ...
- [转] JAVA的Random类
Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要 ...
- JAVA基础--常用类 String,StringBuffer, 基础数据类型包装类, Math类, Enum类
字符串相关类: String, StringBuffer String类为不可变的字符序列 String s1="hello"; String s2="hello&quo ...
- Java之File类
一.初见File类 java.io.File类代表系统中的文件(文件或目录) 常用构造方法 File(String pathname) File(String parent, String child ...
- Java Arrays工具类的使用
Arrays 类 java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的.具有以下功能: 给数组赋值:通过fill方法. 对数组排序:通过sort方法,按升序. 比较数组:通过 ...
- 关于JAVA的Random类的冷知识(转自菜鸟V)
JAVA的Random类(转) Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基 ...
- Java.util.Math类--数学相关的工具类
Math类--数学相关的工具类 java.util.Math类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作. public static double abs(double ...
- java:常用类(包装类,equals和==的比较,Date,java.lang.String中常用方法,枚举enum)
*包装类: 将基本类型封装成类,其中包含属性和方法以方便对象操作. *byte---->Byte *short--->Short *long--->Long *float---> ...
- Java日期处理类的相关使用
java常用类-java日期处理类 Date类 Date类是jdk给我们提高的标准日期类,在java.util包下: 示例代码: import java.util.Date; public class ...
随机推荐
- Python 模拟SQL对文件进行增删改查
#!/usr/bin/env python # _*_ coding:UTF-8 _*_ # __auth__: Dalhhin # Python 3.5.2,Pycharm 2016.3.2 # 2 ...
- windows启动redis服务
参考:https://www.cnblogs.com/M-LittleBird/p/5902850.html 使用python的pip install redis以后还需要下载安装redis安装文件才 ...
- 关于hrtimer_forward小段代码的分析【转】
转自:http://blog.csdn.net/wowuyinglingluan/article/details/45720151 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?) ...
- Android开发工具--AndroidStudio
1.Android studio更改快捷键File->setttings 搜索key map就可以更改成自己喜欢的会计键风格了
- js实现双指缩放图片 手机端双指缩放图片
首先引入js文件,需要jq,pinchzoom.js.pinchzoom.js需要在jq环境下使用,可以 <meta name="viewport" content=&quo ...
- ITerms2在mac系统下的安装和配色,并和go2shell关联
官网下载并安装 拖到应用文件夹使其在应用中展示 熟悉快捷键 无鼠标复制: cmd+f:查找首字母,再按tab向右选择词汇,按shift+tab向左选择词汇 分屏 cmd+d:垂直分屏 cmd+shif ...
- Nodejs解决所有跨域请求
Nodejs解决所有跨域请求 app.use(function(req, res, next) { res.setHeader('Access-Control-Allow-Origin', '*'); ...
- Hydra--密码破解的神器
原来不止burpsuit.sqlmap是神器,还有Hydra. 虽久闻大名,却未曾使用,今天偶然用到,发现支持的服务那真是多,ftp.ssh.smtp.imap.http...,而且支持ssl 可以想 ...
- HDU 1236 排名(结构体+排序)
今天的上机考试虽然有实时的Ranklist,但上面的排名只是根据完成的题数排序,没有考虑 每题的分值,所以并不是最后的排名.给定录取分数线,请你写程序找出最后通过分数线的 考生,并将他们的成绩按降序打 ...
- 一个Sqrt函数引发的血案
源码下载地址:http://diducoder.com/sotry-about-sqrt.html 好吧,我承认我标题党了,不过既然你来了,就认真看下去吧,保证你有收获. 我们平时经常会有一些数据运算 ...