加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flash as 写一个HashMap

发布时间:2020-12-15 18:47:16 所属栏目:百科 来源:网络整理
导读:package? game.utils { ?import flash.utils.Dictionary; ? ?/** ? * 类似java中HashMap类的实现 继承于IMap 具体方法说明见IMap中的注释 ? * */ ?public class HashMap ?{ ??/** ?? * 键名数组,存储键名? ?? * */ ??private var _keys:Array=null; ??/** ?

package? game.utils
{
?import flash.utils.Dictionary;
?
?/**
? * 类似java中HashMap类的实现 继承于IMap 具体方法说明见IMap中的注释
? * */
?public class HashMap
?{
??/**
?? * 键名数组,存储键名?
?? * */
??private var _keys:Array=null;
??/**
?? * 键值字典?
?? * */
??private var props:Dictionary=null;
??/**
?? * 构造函数?
?? * */
??public function HashMap(org:Array = null) {
???this.clear();
???if (org != null)
????for each (var val:Object in org)
????{
?????if (val.hasOwnProperty("key") && val.hasOwnProperty("val"))
??????this.put(val.key,val.val);
????}
??}
??/**
?? * 清除数据?
?? * */
??public function clear():void {
???this.props=new Dictionary? ;
???this._keys=new Array? ;
??}
??/**
?? * 是否包含指定的键名?
?? * */
??public function containsKey(key:Object):Boolean {
???return this.props[key]!=null;
??}
??/**
?? * 是否包含指定的键值?
?? * */
??public function containsValue(value:Object):Boolean {
???var result:Boolean=false;
???var len:uint=this.size();
???if (len>0) {
????for (var i:uint=0; i<len; i++) {
?????if (this.props[this._keys[i]]==value) {
??????result =? true;
??????break;
?????}
????}
???}
???return result;
??}
??/**
?? * 获取指定的键值?
?? * */
??public function getValue(key:Object):Object {
???return this.props[key];
???
??}
??
??/**
?? * 获取指定的键值
?? * 并删除
?? * */
??public function getValueAndRemove(key:Object):Object{
???var i:Object=this.props[key];
???this.remove(key);
???return i;
??}
??/**
?? * 添加一个新键到末端?
?? * */
??public function put(key:Object,value:Object):Object {
???var result:Object=null;
???if (this.containsKey(key)) {
????result=this.getValue(key);
????this.props[key]=value;
???} else {
????this.props[key]=value;
????this._keys.push(key);
???}
???return result;
??}
??/**
?? * 添加一个新键到末端?,并且根据KEY排序,目前支持数字key
?? * */
??public function putAndSort(key:Object,value:Object):Object{
???var result:Object=null;
???if (this.containsKey(key)) {
????result=this.getValue(key);
????this.props[key]=value;
???} else {
????this.props[key]=value;
????this._keys.push(key);
???}
???_keys.sort(Array.NUMERIC);
???return result;
??}
??/**
?? * 移除一个键?
?? * */
??public function remove(key:Object):Object {
???var result:Object=null;
???if (this.containsKey(key)) {
????delete this.props[key];
????var index:int=this._keys.indexOf(key);
????if (index>-1) {
?????this._keys.splice(index,1);
????}
???}
???return result;
??}
??/**
?? * 填充HashMap数据?
?? * */
??public function putAll(map:HashMap):void {
???this.clear();
???var len:uint=map.size();
???if (len>0) {
????var arr:Array=map.keys();
????for (var i:uint=0; i<len; i++) {
?????this.put(arr[i],map.getValue(arr[i]));
????}
???}
??}
??/**
?? * 返回数据的长度?
?? * */
??public function size():uint {
???return this._keys.length;
??}
??/**
?? *返回是否包含数据?
?? * */
??public function isEmpty():Boolean {
???return this.size()? <1;
??}
??/**
?? * 返回HashMap数据?
?? * */
??public function values():Array {
???var result:Array=new Array? ;
???var len:uint=this.size();
???if (len>0) {
????for (var i:uint=0; i<len; i++) {
?????result.push(this.props[this._keys[i]]);
????}
???}
???return result;
??}
??
??/**
?? * 返回键名数组?
?? * */
??public function keys():Array {
???return this._keys;
??}

?} }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读