java入門 -- Set接口的實現(xiàn)類HashSet

import java.util.HashSet;

import java.util.Set;

/*

* Collection

* ------| List 有序列表接口列表 實現(xiàn)了List集合接口的類骆撇,特點是有序不可重復(fù)

*-----------| ArrayList 內(nèi)部維護(hù)了一個對象數(shù)據(jù),增刪慢胆建,但是查詢塊

*-----------| LinedList 內(nèi)部是一個鏈表的數(shù)據(jù)結(jié)構(gòu),增刪改塊畜埋,查詢慢

*-----------| Vector? 底層維護(hù)了一個Object的數(shù)組對象谤碳,和ArrayList實現(xiàn)一樣,但是線程安全的伞辛,操作效率低,已經(jīng)被ArrayList取代夯缺。

*

* ------| Set 無序列表接口 實現(xiàn)Set集合接口的類蚤氏,特點是無序不可重復(fù)

* ---------| HashSet Hash表? Set接口實現(xiàn)類? 底層使用Hash表來實現(xiàn)的,特點:存儲速度快踊兜。

* ---------| TreeSet Set接口實現(xiàn)類

* 無序: 元素添加進(jìn)入的順序和遍歷出來的順序是不一致的竿滨。

* 不可重復(fù):如果添加重復(fù)元素,添加不會報錯捏境,但是不會添加成功;

* Set 接口的實現(xiàn)類

* HashSet 集合類添加元素的原理:

* 當(dāng)向HashSet集合中添加元素的時候于游,HashSet對象會先調(diào)用元素的HashCode方法返回值,然后通過

*? 移位等運算就可以得出元素在Hash表中的存儲位置垫言。也就是說如果HashSet得到的hash就是元素的hashCode方法

*? 返回的值贰剥,如果該值已經(jīng)在Hash表中存在,就不能再添加了》可能發(fā)生的情況:

*

*? 1. 如果Hash表算出的存儲位置目前沒有元素存儲筷频,那么就可以將元素進(jìn)行存儲:

*? 2. 如果Hash表算出的存儲位置目前已經(jīng)有元素存儲蚌成,就會再調(diào)用元素的equals()方法進(jìn)行比較,如果返回true,

*? 說明元素重復(fù)凛捏,不會進(jìn)行添加担忧,如果不相等,說明元素不重復(fù)坯癣,就科技繼續(xù)添加瓶盛,也就是說一個位置放了兩個元素。

*? 因此在Hash表中添加元素坡锡,一般要同時重寫元素的equals()和hashCode()方法蓬网,如果hashCode()的值相等,就通過

*? 再次判斷equels的返回值來判斷是否重復(fù)了鹉勒。也就是說調(diào)用equals方法的前提是hashCode()返回的值是一樣的帆锋,

*? 所以并不是每次都會調(diào)用equals()方法;

*

* 注意:HashCode默認(rèn)情況下是對象的內(nèi)地地址禽额,但是String對象改寫了Object的HashCode()方法

*/

class Perso2n{

String name; //姓名

int id; //id號:

public Person2(int id, String name){

this.id = id;

this.name = name;

}

@Override

public boolean equals(Object obj) {

// TODO Auto-generated method stub

Person2 p = (Person2)obj;

return this.id==p.id;

}

@Override

public int hashCode() {

// TODO Auto-generated method stub

//測試添加元素的時候調(diào)用了HashCode()方法锯厢;

System.out.println("HashCode()方法被調(diào)用了");

return this.id;

}

@Override

public String toString() {

// TODO Auto-generated method stub

return "{"+ this.id + this.name +"}";

}

}

public class Demo4 {

public static void main(String[] args){

HashSet hs = new HashSet();

/*

hs.add("1");

hs.add("2");

hs.add("3");

*/

hs.add(new Person2(100, "大舅"));

hs.add(new Person2(101, "二舅"));

hs.add(new Person2(102, "三舅"));

hs.add(new Person2(101, "四舅"));

System.out.println(hs);

String str = "hello world";

String str1 = new String("hello world");

str1.hashCode();

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市脯倒,隨后出現(xiàn)的幾起案子实辑,更是在濱河造成了極大的恐慌,老刑警劉巖藻丢,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剪撬,死亡現(xiàn)場離奇詭異,居然都是意外死亡悠反,警方通過查閱死者的電腦和手機(jī)残黑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門馍佑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人梨水,你說我怎么就攤上這事拭荤。” “怎么了疫诽?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵舅世,是天一觀的道長。 經(jīng)常有香客問我奇徒,道長雏亚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任摩钙,我火速辦了婚禮评凝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘腺律。我一直安慰自己奕短,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布匀钧。 她就那樣靜靜地躺著翎碑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪之斯。 梳的紋絲不亂的頭發(fā)上日杈,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音佑刷,去河邊找鬼莉擒。 笑死,一個胖子當(dāng)著我的面吹牛瘫絮,可吹牛的內(nèi)容都是我干的涨冀。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼麦萤,長吁一口氣:“原來是場噩夢啊……” “哼鹿鳖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起壮莹,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤翅帜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后命满,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涝滴,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了歼疮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片僵娃。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖腋妙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情讯榕,我是刑警寧澤骤素,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站愚屁,受9級特大地震影響济竹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜霎槐,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一送浊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丘跌,春花似錦袭景、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至报辱,卻和暖如春与殃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背碍现。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工幅疼, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人昼接。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓爽篷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親慢睡。 傳聞我的和親對象是個殘疾皇子狼忱,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容