容器(包含重寫equals方法)

2021-09-22 18:14:14 字數 1688 閱讀 3845

介面圖

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)

//重寫equals方法,判斷兩個物件內容上是否相同,相同返回ture

public boolean equals(object obj)

map的底層實現

存入元素放入乙個鍊錶陣列中,即元素為鍊錶的陣列,同一鍊錶各結點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 但是這一性質並不符...