코딩하다 보면 뭐 key , value 형태를 많이 쓰는데 그렇다고 해서 Object로 대충 사용하기 그래서 Map을 대충 구현해봄
계속 쓰다보면서 필요한 기능 있으면 추가 해서 써야지 후...
필요하신분은 뭐 알아서 수정해서 쓰세요 궁금한점 보완해야 될 점은 리플로 감사 합니다.
(기본적으로 뭐 Array를 좀활용해서 만들어 본거네요)
package utils
{
public class WMap
{
private var _arrData:Array = [];
/**
* 맵 정보를 초기화 한다
* */
public function clear():void
{
_arrData = [];
}
/**
* 값이 존재 하면 변경, 없으면 삽입 한다
* @param key 키
* @param value 값
* */
public function insertOrUpdateMap(key:String, value:*):void
{
if(hasKey(key))
{
updateMap(key,value);
}else{
insertMap(key,value);
}
}
/**
* 데이터를 삽입한다
* (중복키를 삽입할 수 없다 , 중복키는 update를 이용바랍니다.)
* @param key 키
* @param value 값
* @return 삽입 여부
* */
public function insertMap(key:String, value:*):Boolean
{
if(!hasKey(key))
{
_arrData.push(key);
_arrData[key] = value;
return true;
}
return false;
}
/**
* 데이터를 업데이트 한다
* (키가 없는 경우는 삽입 할 수 없다.)
* @param key 키
* @param value 값
* @return 삽입 여부
* */
public function updateMap(key:String, value:*):Boolean
{
if(hasKey(key)){
_arrData[key] = value;
return true;
}
return false;
}
/**
* 해당 키에 해당하는 값을 맵에서 삭제한다
* @param key 키
* @return 삭제 여부
* */
public function deleteMap(key:String):Boolean
{
var arrTemp:Array = [];
if(hasKey(key)){
for each(var s:String in _arrData)
{
if(s!=key){
arrTemp.push(s);
arrTemp[s] = _arrData[s];
}
}
_arrData = arrTemp;
return true;
}
return false;
}
/**
* 해당 Key를 가지고 있는지 여부를 확인한다
* @param key 키
* @return 가지고 있는지 여부
* */
public function hasKey(key:String):Boolean
{
for each(var s:String in _arrData)
{
if(s==key)
return true;
}
return false;
}
/**
* 현재 가지고 있는 키의 개수를 반환한다.
* */
public function get length():int
{
return _arrData.length;
}
/**
* 키 목록 정보를 반환한다
* @return 키목록
* */
public function get keyList():Array
{
var tmpArr:Array = [];
for(var i:int=0;i<_arrData.length;i++)
{
tmpArr.push(_arrData[i]);
}
return tmpArr;
}
/**
* 해당 키에 해당하는 값을 반환한다
* (없는 키 일 경우 null을 반환한다)
* @param key 키
* @return 값
* */
public function getValue(key:String):*
{
if(hasKey(key)){
return _arrData[key];
}