java入門篇 18) set集合

2021-09-08 21:37:21 字數 1811 閱讀 8260

a.元素無序

b.元素不重複,如果加入重複元素,add方法會返回false

c.可以直接輸出set物件(多型),已經重寫了tostring()方法

d.set判斷兩個物件是否相等用equals方法

(1)jdk1.7中,雜湊表:是乙個元素為鍊錶的陣列,綜合了陣列和鍊錶的優點

(2)jdk1.8中,雜湊表:是乙個元素為鍊錶或者紅黑樹的陣列

(3)當向hashset集合中存入乙個元素時,hashset會呼叫該物件的hashcode()方法來得到該物件的hashcode值,然後根據hashcode值決定該物件早hashset中儲存的位置。

(1)先是通過hashcode()判斷是否相等

(2)第一步成立的基礎上再用equals方法判斷兩個物件的內容是否相等

(1)元素無序且唯一

元素的唯一性要:

a.重寫:hascode()方法

目的:i.為了確定元素在陣列中的位置

ii.減少元素之間用而equals()方法比較確定鍊錶上的位置的次數

public class student 

public student(string name, string age)

@override

public int hashcode()

}

b.重寫:equals()方法

步驟:1.判斷兩個隊象是否位址相同

2.判斷兩個物件型別是否一致

3.判斷兩個物件內容是否相同

@override

public boolean equals(object o)

說明:只重寫equals方法可能會遇到兩個物件,乙個物件那個的成員變數的值比另乙個物件那個的成員變數的多,但相同的變數的值相同,這時equals方法無法判斷出正確的結果,就需要hashcode方法來判斷。

(2)hashset不是執行緒安全的

(3)hashset 迭代很可能支出較大,因為它所需迭代時間與其容量 成正比。

(4)集合元素可以是null,但是只能放入乙個null值。

方法:用增強for迴圈來遍歷

4.1底層資料結構:雙重鏈結列表和雜湊表

4.2特點:

a.與hashset一樣根據元素的hashcode值來決定元素的儲存位置

c.有序鏈結列表定義了迭代順序,即按照將元素插入到 set 中的順序(插入順序)進行迭代

d.可預知迭代順序

e.允許null元素,只允許有乙個null值。

f.迭代所需時間與 set 的大小 成正比,而與容量無關

public class ste_text 

}結果:[zhang, zhg, zhng, ng, zg, g, z, null]

a.元素有序且唯一

b.通過equals方法返回blloean型別結果或者compareto方法返回0

來判斷a.自然排序:

呼叫引數為comparator物件的有參建構函式建立treeset物件,並重寫compare方法。

treesetset = new treeset<>(new comparator() 

});

b.使用比較器排序

public class student implements comparable
思路:利用set集合的唯一性

public class column 

for (integer num : set)

}}

JAVA菜鳥入門篇 Java過載 (十二)

一 過載 overload 方法的過載簡單說,就是函式或者方法有同樣的名稱,但是引數列表不相同的情形,這樣的同名不同引數的函式或者方法之間,互相稱之為過載函式或者方法。呼叫時,會根據不同的參數列選擇對應的方法。兩同三不同 同乙個類,同乙個方法名 不同 引數列表不同 型別 個數 順序不同 注意事項 只...

python基礎 集合 函式一(入門篇 六)

2.函式一 3.可變物件 列表 4.總結 使用 來建立集合可以通過set 來將序列和字典轉換成集合 集合建立放方法 s s set hello 括號裡面必須是可迭代的 集合只能儲存不可變物件 不能是列表這種可變物件 集合中儲存的物件是無序的 是隨機的所以無法運用索引 集合不能出現重複元素 含有重複元...

java入門篇(28) 多執行緒(補充一)

二 執行緒的例項 三 同步方法 思路 用實現callable介面的方法建立多執行緒,futuretask是callable的子類,有乙個get 方法用來獲取執行緒執行完之後的結果。public class callable text1 implements callable override pub...