介面圖
hashtable 執行緒安全,效率低
for(map.entryentry:map.entryset())
//或iterator i=map.entryset().iterator();
while(i.hasnext())
set keys = m.keyset( );
if(keys != null)
for(string s : keys)
map的底層實現//重寫equals方法,判斷兩個物件內容上是否相同,相同返回ture
public boolean equals(object obj)
存入元素放入乙個鍊錶陣列中,即元素為鍊錶的陣列,同一鍊錶各結點hashcode相同(當鍊表太長時自動轉換為紅黑樹,提高查詢效率)
hashset的底層實現是hashmap
測試
/**
* @author haien
* @description 模擬arraylist內部類itr對iterator的實現
* @date 2018/10/23
**/public class myiterator
}public boolean hasnext()
//用過一次這個方法就相當於把乙個元素給出棧了一樣,而lastret就相當於指著棧頂元素,cursor指著第二個元素
public e next()
//arraylist實際是用乙個陣列來盛放元素的,迭代的時候要把這個陣列拿到
object elementdata=arraylist.this.elementdata;
//可能i剛傳進來elementdata就在另乙個執行緒裡被刪了乙個元素
if(i>=elementdata.length)
cursor++;
return (e)elementdata[lastret=i];
}/**相當於棧頂元素出棧;呼叫方式一般為:
* if("abc".equals(it.next()))
* */
public void remove()
checkforcomodification();
//lastret就是要刪除的元素,remove方法不會改變lastret,但會改modcount;刪除元素後把後面的元素前移一位
try catch (indexoutofbound***ception e)}}
重寫equals方法
對於重寫equals方法有以下例子 object類中的常用方法。object類是所有類的根類,定義了所有物件都具備的功能。api 應用程式介面 文件 class person extends object 判斷是否是同齡人。這個方法也是在比較兩個person物件是否相等。注意 person類中是否有...
equals方法重寫
來自的文章 一 為什麼equals 方法要重寫?判斷兩個物件在邏輯上是否相等,如根據類的成員變數來判斷兩個類的例項是否相等,而繼承object中的equals方法只能判斷兩個引用變數是否是同乙個物件。這樣我們往往需要重寫equals 方法。我們向乙個沒有重複物件的集合中新增元素時,集合中存放的往往是...
重寫equals方法
object物件中的 public boolean equals object obj 指示其他某個物件是否與此物件 相等 這裡的相等指的是比較的兩方指向同乙個物件 對於任何非空引用值 x 和 y,當且僅當 x 和 y 引用同乙個物件 就是同一塊記憶體位址 此方法才返回 true 但是這一性質並不符...