Set集合特點:
不包含重復元素的集合
沒有帶索引的方法,所以不能使用普通for循環(huán)遍歷
HashSet:對集合的迭代順序不作任何保證
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ù)對象的地址或者字符串或者數(shù)字算出來的int類型的數(shù)值
Object類中的 hashCode()
public int hashCode(): 返回對象的哈希碼值
同一個對象多次調用hashCode()方法返回的哈希值是相同的

例子.png
HashSet集合概述和特點:
底層數(shù)據(jù)結構是哈希表
對集合的迭代順序不做任何保證
沒有帶索引的方法,不能對普通for循環(huán)遍歷
由于是set集合,所以不包含重復元素的集合

HashSet集合保證元素唯一性源碼分析.png
哈希表默認初始長度為16,負載為0.75

哈希表存儲流程.png
LinkedHashSet集合概述和特點
哈希表和鏈表實現(xiàn)的Set接口,具有可預測的迭代次序
由鏈表保證元素有序,也就是說元素的存儲和去除順序是一致的
由哈希表保證元素唯一,也就是說沒有重復的元素
TreeSet集合概述和特點

TreeSet集合概述和特點
.png
自然排序Comparable的使用

1.png

2.png

3.png

4.png
return 1 正序
return -1 倒序
return 0 返回第一個元素
Comparator的使用

Comparator的使用.png