Set集合特點(diǎn):
不包含重復(fù)元素的集合
沒有帶索引的方法沐鼠,所以不能使用普通for循環(huán)遍歷
HashSet:對(duì)集合的迭代順序不作任何保證
Set<String> set = new HashSet<String>();
set.add("hello");
set.add("world");
set.add("world");
for(String s : set) {
System.out.println(s);
}
輸出: world hello
哈希值
哈希值是JDK根據(jù)對(duì)象的地址或者字符串或者數(shù)字算出來的int類型的數(shù)值
Object類中的 hashCode()
public int hashCode(): 返回對(duì)象的哈希碼值
同一個(gè)對(duì)象多次調(diào)用hashCode()方法返回的哈希值是相同的
例子.png
HashSet集合概述和特點(diǎn):
底層數(shù)據(jù)結(jié)構(gòu)是哈希表
對(duì)集合的迭代順序不做任何保證
沒有帶索引的方法甘穿,不能對(duì)普通for循環(huán)遍歷
由于是set集合池户,所以不包含重復(fù)元素的集合
HashSet集合保證元素唯一性源碼分析.png
哈希表默認(rèn)初始長度為16预伺,負(fù)載為0.75
哈希表存儲(chǔ)流程.png
LinkedHashSet集合概述和特點(diǎn)
哈希表和鏈表實(shí)現(xiàn)的Set接口荚坞,具有可預(yù)測(cè)的迭代次序
由鏈表保證元素有序戳鹅,也就是說元素的存儲(chǔ)和去除順序是一致的
由哈希表保證元素唯一佩迟,也就是說沒有重復(fù)的元素
TreeSet集合概述和特點(diǎn)
TreeSet集合概述和特點(diǎn)
.png
自然排序Comparable的使用
1.png
2.png
3.png
4.png
return 1 正序
return -1 倒序
return 0 返回第一個(gè)元素
Comparator的使用
Comparator的使用.png