java中怎么遍歷hashmap?
一個。
HashMapstaffnewHashMap()
添加關(guān)鍵字值對,自己寫。
橫貫
Setentriesstaff.entrySet()
()
while(iter.hasNext())
{
地圖。Entryentry(地圖。條目)()
()什么關(guān)鍵詞?
()獲取值
}
兩個。
MapmapnewHashMap()
for(Iteratoritermap.entrySet()。iterator()iter.hasNext()){
地圖。入口入口(地圖。entry)()//映射。entry還取出鍵值對。
()
()
}
三個。
MapmapnewHashMap()
對于(()。iterator()iter.hasNext()){
()
(關(guān)鍵)
}
迭代器是迭代器。
對于keySet,實際上遍歷了兩次,一次是到迭代器,一次是從hashmap中取出key的值。
Entryset只是第一次遍歷它,他將鍵和值都放在條目中,所以它就快到了。
對于我們這些做web的人來說,可能并不是所有的人都使用vo對象或者表單來封裝信息,所以當我們使用hashmap的時候,我們的內(nèi)存就被上面的對象填滿了。因此,使用entryset的遍歷性能將得到提高。
Hashmap用的很多,比如導入信息的時候,因為大部分導入的信息都需要判斷是否有重復信息,所以可以用containsK
arraylist和linkedlist的區(qū)別?
ArrayList和linkedList
共性:ArrayList和linkedList都是List接口的實現(xiàn)類,所以都實現(xiàn)了List所有未實現(xiàn)的方法,只是實現(xiàn)方法不同。
區(qū)別:List接口的實現(xiàn)不同。
ArrayList以數(shù)組的形式實現(xiàn)了List接口,所以使用ArrayList來實現(xiàn)快速隨機獲取對象的要求會更高效。
linkedList使用鏈表實現(xiàn)列表接口,所以在執(zhí)行插入和移除動作時比ArrayList更高效。適用于實現(xiàn)堆棧和隊列。
哈希表和哈希表
共性:都實現(xiàn)了地圖接口。
差異:
(1)繼承的父類不同
Hashtable繼承自Dictionary類,而HashMap繼承自AbstractMap類。
(2)線程安全性不同
Hashtable方法是同步,而HashMap中的方法默認是不同步的。
(3)提供contains方法
HashMap去掉了Hashtable的contains方法,改成了containsValue和containsKey,因為contains方法容易被誤解。
Hashtable保留了三種方法:contains、containsValue和containsKey,其中contains和containsValue的作用相同。
(4)4)鍵和值是否允許空值。
在哈希表中,鍵和值都不允許為空值。在HashMap中,null可以作為一個鍵,而且這樣的鍵只有一個;一個或多個鍵可以有空值。
(5)兩種遍歷模式的內(nèi)部實現(xiàn)不同。
HashMap使用迭代器;;Hashtable使用迭代器和枚舉。
(6)哈希值不同
哈希值的用法不同。HashTable直接使用對象的hashCode。HashMap重新計算哈希值。
(7)內(nèi)部實現(xiàn)使用的數(shù)組初始化和擴展方法不同。
哈希表s在沒有指定容量的情況下默認容量是11,增加的是old*2^1;;而HashMap是16,Hashtable不要求底層數(shù)組的容量必須是2的整數(shù)次方,而HashMap要求必須是2的整數(shù)次方。