java基礎 類集框架二

2021-06-28 03:31:32 字數 2007 閱讀 4815

學習筆記 -  set、hashset、treeset

一、set簡介

* -set :元素是無序(存入和取出的順序不一定一致),元素不可以重複

*   |--hashset:底層資料結構是雜湊表

*    hashset是如何保證元素唯一性的呢?

*    如果元素的hashcode值相同,才會判斷equals是否為true

*    如果元素的hashcode值不同,不會呼叫equals

*    

*    注意:對於判斷預算是否存在,以及刪除等操作,依賴的方法是元素的hashcode和equals方法

*    先依賴hashcode在依賴equals方法    

*   

*   |--treeset

* * set集合的功能和collection是一致的

二、hashset使用示例

public class hashsettext )

public static void main(string args)

}public static void sop(object obj) }

class person2

//注意hascode  和  hashcode

public int hashcode()

public boolean equals(object obj)

public int getage()

public string getname() }

三、treeset簡介

* set無序,不可以重複元素。

*   |--hashset:資料結構是雜湊表,執行緒是非同步的。

*      保證元素唯一性的原理:判斷元素的hashcode值是否相同。

*      如果相同,還會繼續判斷元素的equals方法,是否為true

* *   |--treeset:可以對set集合中的集合進行排序。

*      底層資料結構是二叉樹

*      保證元素唯一性的依據

*      compareto方法 return 0

* *      treeset排序的第一種方式:讓元素自身具備比較性.

*      元素需要實現 comparable介面,覆蓋comparableto方法。

*      這種方式也稱為元素的自然順序,或者預設順序。

* *      treeset的第二種排序方式

*      當元素自身不具備比較性時,或者具備的比較性不是所需要的

*      這時就需要讓集合自身具備比較性

*      在集合初始化時,就有了比較方式。

*      

* 需求:

* 往treeset集合中儲存自定義物件學生。

* 想按照學生的年齡進行排序。

* * 排序時,當主要條件相同時,一定判斷一下次要條件。

四、treeset使用示例

public class treesetdemo2 )

public static void main(string args) }

}@suppresswarnings("rawtypes")

class student2 implements comparable //該介面強制讓學生具備比較性

public string getname()

public int getage()

@override

public int compareto(object obj)

return -1;}}

/*** 1.讓元素自身具有比較性

* 2.讓容器自身具備比較性

*  * 以比較器為主**/

class mycompare implements comparator

return num;}}

Java 類集框架

主要方法 add 增加資料 clear 清空資料 contains 是否包含某個資料 isempty 是否為空 remove 移除某個資料 size 獲取集合中的資料個數 toarray 轉換為物件陣列 iterator 例項化父介面iterator 物件陣列使用remove 和contains 時...

Java基礎 集合框架《二》

map與collection在集合框架是並列存在的。map儲存的是鍵對值。一對一對往裡存,而且要保證鍵的唯一性。map儲存元素使用的是put方法,collection使用的是add方法。map集合沒有直接取出元素的方法,而是先轉換成set集合,再通過迭代器獲取元素。map hashtable 底層是...

Java類集框架 HashMap原始碼分析

hashmap是基於map的鍵值對對映表,底層是通過陣列 鍊錶 紅黑樹 jdk1.8加入 來實現的。hashmap結構 hashmap中儲存元素,是將key和value封裝成了乙個node,先以乙個node陣列的來儲存,通過key的hashcode來計算hash值,根據hash值和hashmap的大...