016Java知識點小結--Set

1.泛型概述

泛型是一種特殊的類型,它把指定類型的工作推遲到客戶端代碼聲明並實例化類或方法的時候進行。
集合模仿數組的做法,在創建對象的時候明確元素的數據類型。 而這種技術被稱爲:泛型。

1.格式:
<數據類型>
此處的數據類型只能是引用類型。

2.泛型的好處

  1. 提高了程序的安全性
  2. 將運行期遇到的問題轉移到了編譯期
  3. 省去了類型強轉的麻煩

2.泛型應用

1. 泛型類

把泛型定義在類上
格式:public class 類名<泛型類型1,…>
注意:泛型類型必須是引用類型

2.泛型方法

把泛型定義在方法上
格式:public <泛型類型> 返回類型 方法名(泛型類型 .)

3.泛型接口

把泛型定義在接口上
格式:public interface 接口名<泛型類型1…>

4.泛型高級(通配符)

泛型通配符 <?>
任意類型,如果沒有明確,那麼就是Object以及任意的Java類了
? extends E
向上限定,E及其子類
? super E
向下限定,E及其父類)

3.可變參數

可變參數
定義方法的時候不知道該定義多少個參數
格式
修飾符 返回值類型 方法名(數據類型… 變量名){}
注意:
這裏的變量其實是一個數組
如果一個方法有可變參數,並且有多個參數,那麼,可變參數肯定是最後一個

4.Set接口

Set是一個不包含重複元素的 Collection接口。
Collection
|–List
有序(存儲順序和取出順序一致),可重複
|–Set
無序(存儲順序和取出順序不一致),唯一

這裏寫圖片描述

5.HashSet

它不保證 set 的迭代順序;特別是它不保證該順序恆久不變。

1.HashSet如何保證元素唯一性

底層數據結構是哈希表(元素是鏈表的數組)
哈希表依賴於哈希值存儲
添加功能底層依賴兩個方法:
int hashCode()
boolean equals(Object obj)

2.HashSet:存儲字符串並遍歷
問題:爲什麼存儲字符串的時候,字符串內容相同的只存儲了一個呢?
通過查看add方法的源碼,我們知道這個方法底層依賴 兩個方法:hashCode()和equals()。

3.LinkedHashSet類
元素有序唯一
由鏈表保證元素有序(存儲和取出是一致)
由哈希表保證元素唯一

6.TreeSet類

TreeSet類概述
使用元素的自然順序對元素進行排序
或者根據創建 set 時提供的 Comparator 進行排序
具體取決於使用的構造方法。
TreeSet集合的特點:排序和唯一

TreeSet集合保證元素排序和唯一性的原理
唯一性:是根據比較的返回是否是0來決定。
排序:
A:自然排序(元素具備比較性)
讓元素所屬的類實現自然排序接口 Comparable
B:比較器排序(集合具備比較性)
讓集合的構造方法接收一個比較器接口的子類對象Comparator

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章