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...