linkedmapimplements map
以鍊錶的的形式實現鍵值對的儲存,
儲存 鍵 - 值 對的資料結構, node
static
class
node
implements
map.entry
, serializable
map介面方法介紹
**參考了 jdk1.8 linkedlist 的實現;
對於 linkedlist的實現感興趣的請看這篇部落格linkedlist原始碼**
/**
* 以單鏈表的形式實現(鍵-值)對
* put 的時間規模為 o(1), get remove set 的時間規模的最壞時為 o(n)
* 這個鍊錶不支援 往後遍歷, 不同於hash 表的是它不需要擴容也沒有容量的限制,記憶體利用率非常高而且省記憶體.在記憶體緊缺的情況下非常有好處.
* * @author chenyq
* @date 2019-01-01
* @email [email protected]
* * @param * @param */
public
class
linkedmap
implements
map, cloneable, serializable
public
linkedmap
(map
m)@override
public
intsize()
@override
public
boolean
isempty()
@override
public
boolean
containskey
(object key)
@override
public
boolean
containsvalue
(object value)
return
false;}
@override
public v get
(object key)
@override
public v put
(k key, v value)
return
add(key, value);}
v add
(k k, v v)
modcount++
;linklast
(new
node
<
>
(k, v));
return null;}
node
node
(object key)
node = node.next;
}return null;
}void
linklast
(node
n)else
size++;}
@override
public v remove
(object key)
node
unlink
(object key)
else
return e;
} prev = e;
e = next;
}return e;
}@override
public
void
putall
(map<
?extendsk,
?extends
v> m)
modcount++
;for
(entry<
?extendsk,
?extends
v> entry : m.
entryset()
)}@override
public
void
clear()
size =0;
modcount++;}
@override
public set
keyset()
/** * 這是乙個只支援包含返回所有 key 的迭代器的set檢視
*/class
keyset
extends
abstractset
@override
public
intsize()
}@override
public collection
values()
/** * 返回所有 value 的collection 的檢視
*/class
valuecollection
extends
abstractcollection
@override
public
intsize()
}@override
public set
>
entryset()
/** * 返回包含所有 鍵值對的set 集合檢視
* */
class
entryset
extends
abstractset
>
@override
public
intsize()
@override
public string tostring()
}@override
public object clone()
throws clonenotsupportedexception
/** *
* 這是乙個迭代器,
* @param */
abstract
class
linkediterator
implements
iterator
@override
public
boolean
hasnext()
entry
nextentry()
current = next;
next = next.next;
index++
;return current;
}void
checkmodcount()
}@override
public
void
remove()
}class
entrysetiterator
extends
linkediterator
>
}class
keysetiterator
extends
linkediterator
}class
valuesetiterator
extends
linkediterator
}@override
public string tostring()
stringbuilder sb =
newstringbuilder()
; node
n = first;
dowhile
((n = n.next)
!= null)
;int len = sb.
length()
;return sb.
delete
(len -
2, len).(
']')
.tostring()
;}/** *
* 這個是用於儲存鍵值對的節點, 即鍊錶.是單鏈表, 只能往前迭代.
* @param * @param */
static
class
node
implements
map.entry
, serializable
@override
public k getkey()
@override
public v getvalue()
@override
public v setvalue
(v value)
@override
public string tostring()
}}
java集合框架(map集合)
map集合 該集合儲存鍵值對,一對一對往裡存,而且要保證鍵值得唯一性。一 基本方法 1.新增 put k key,v value 將指定的值與此對映中的指定鍵關聯 可選操作 putall map m 從指定對映中將所有對映關係複製到此對映中 可選操作 2.刪除 從此對映中移除所有對映關係 可選操作 ...
Java集合類框架 Map
如果是實現了map介面的集合類,具備的特點 儲存的資料都是以鍵值對的形式存在的,鍵不可重複,值可以重複。map介面的方法 新增 put k key,v value putall map extends k,extends v m 刪除 remove object key clear 獲取 get o...
Java中map集合框架
map 一次新增一對元素,collection一次新增乙個元素 map也稱為雙列集合,collection稱為單列集合 其實map集合中儲存的就是鍵值對。必須保證鍵的唯一性 1.新增 value put key,value 返回前乙個和key關聯的值,如果沒有返回null 2.修改 void cle...