用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 ...
随机推荐
- k8s的应用打包工具Helm
每个成功的软件平台都有一个优秀的打包系统,比如 Debian.Ubuntu 的 apt,Redhat.Centos 的 yum.而 Helm 则是 Kubernetes 上的包管理器. 本章我们将讨论 ...
- 【转载】Window 窗口层次关系
相信在Window 下面编程的很多兄弟们都不是很清楚Window 中窗口的层次关系是怎么样的,这个东西很久已经研究过一下,后来又忘记了,今天又一次遇到了这个问题,所以便整理一下.下面就说说Window ...
- Qt笔记——QFile,QDataStream,QTextStream
QFile #ifndef WIDGET_H #define WIDGET_H #include <QWidget> namespace Ui { class Widget; } clas ...
- LayerDate渲染多个class出现闪现问题的解决
填写表单的时候有时候会需要添加一行表单的业务逻辑,而表单要用到LayerDate的话便不可避免的出现多个class的情况 这种情况下后面的class是无法渲染的,layerDate官网提出了解决方法: ...
- 团队开发中git分支的使用
1.Github上保持两个分支:master和develop. master是主分支,对项目进行tag或发布版本等操作,都必须在该分支上进行.最好设为不可提交只能合并的. develop是开发分支,从 ...
- 对DDD中领域服务的理解
CZ 能不能清晰具体区分service和实体的区别 网上有人用DCI来解决 不知道对不对 STST 我复习下DDD中的服务的概念了参与讨论啊CZ 这个我也看过 但是太过于笼统 STST STST 复习 ...
- Codeforces 538 A. Cutting Banner-substr()函数字符串拼接
A. Cutting Banner time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- (13)python 正则表达式
匹配单个字符 f. o f和o之间是任意字符 例如:fbo123 .. 任意两个字符 \.用来匹配. 边界匹配 the 表示包含the的任何字符串 ^from 表示以from开头的所 ...
- POJ 2068 Nim(博弈论)
[题目链接] http://poj.org/problem?id=2068 [题目大意] 给出两队人,交叉放置围成一圈,每个人能取的石子数有个上限,各不相同 轮流取石头,取到最后一块石头的队伍算输,问 ...
- AOJ 2230 How to Create a Good Game(费用流)
[题目链接] http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2230 [题目大意] 给出一张图,从1到n的最长路不变的情况下, 还能 ...