Java中的HashSet和TreeSet


 

1:Set集合(理解)
	(1)Set集合的特點
		無序,唯一
	(2)HashSet集合(掌握)
		A:底層數據結構是哈希表(是一個元素為鏈表的數組)
		B:哈希表底層依賴兩個方法:hashCode()和equals()
		  執行順序:
			首先比較哈希值是否相同
				相同:繼續執行equals()方法
					返回true:元素重復了,不添加
					返回false:直接把元素添加到集合
				不同:就直接把元素添加到集合
		C:如何保證元素唯一性的呢?
			由hashCode()和equals()保證的
		D:開發的時候,代碼非常的簡單,自動生成即可。
		E:HashSet存儲字符串並遍歷
		F:HashSet存儲自定義對象並遍歷(對象的成員變量值相同即為同一個元素)
	(3)TreeSet集合
		A:底層數據結構是紅黑樹(是一個自平衡的二叉樹)
		B:保證元素的排序方式
			a:自然排序(這種排序方式可以理解成元素本身具備比較性)
				讓元素所屬的類實現Comparable接口
			b:比較器排序(這種排序可以理解成集合類具備比較性)
				讓集合構造方法接收Comparator的實現類對象,實現方式可以用匿名類來實現。
		C:把我們講過的代碼看一遍即可
	(4)案例:
		A:獲取無重復的隨機數
		B:鍵盤錄入學生按照總分從高到底輸出
		
2:Collection集合總結(掌握)
	Collection
		|--List	有序,可重復
			|--ArrayList
				底層數據結構是數組,查詢快,增刪慢。
				線程不安全,效率高
			|--Vector
				底層數據結構是數組,查詢快,增刪慢。
				線程安全,效率低
			|--LinkedList
				底層數據結構是鏈表,查詢慢,增刪快。
				線程不安全,效率高
		|--Set	無序,唯一
			|--HashSet
				底層數據結構是哈希表。
				如何保證元素唯一性的呢?
					依賴兩個方法:hashCode()和equals()
					開發中自動生成這兩個方法即可
				|--LinkedHashSet
					底層數據結構是鏈表和哈希表
					由鏈表保證元素有序
					由哈希表保證元素唯一
			|--TreeSet
				底層數據結構是紅黑樹。
				如何保證元素排序的呢?
					自然排序
					比較器排序
				如何保證元素唯一性的呢?
					根據比較的返回值是否是0來決定
					
3:針對Collection集合我們到底使用誰呢?(掌握)
	唯一嗎?
		是:Set
			排序嗎?
				是:TreeSet
				否:HashSet
		如果你知道是Set,但是不知道是哪個Set,就用HashSet。
			
		否:List
			要安全嗎?
				是:Vector
				否:ArrayList或者LinkedList
					查詢多:ArrayList
					增刪多:LinkedList
		如果你知道是List,但是不知道是哪個List,就用ArrayList。
	
	如果你知道是Collection集合,但是不知道使用誰,就用ArrayList。
	
	如果你知道用集合,就用ArrayList。
	
4:在集合中常見的數據結構(掌握)
	ArrayXxx:底層數據結構是數組,查詢快,增刪慢
	LinkedXxx:底層數據結構是鏈表,查詢慢,增刪快
	HashXxx:底層數據結構是哈希表。依賴兩個方法:hashCode()和equals()
	TreeXxx:底層數據結構是二叉樹。兩種方式排序:自然排序和比較器排序
		

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM