程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> TreeSet集合深入了解--------攻擊原理,treeset--------

TreeSet集合深入了解--------攻擊原理,treeset--------

編輯:JAVA綜合教程

TreeSet集合深入了解--------攻擊原理,treeset--------


Set接口
Set不允許包含相同的元素,如果試圖把兩個相同元素加入同一個集合中,add方法返回false。(無序,不可重復 )
Set判斷兩個對象相同不是使用==運算符,而是根據equals方法。也就是說,只要兩個對象用equals方法比較返回true,Set就不 會接受這兩個對象。

HashSet
HashSet有以下特點
 不能保證元素的排列順序,順序有可能發生變化
 不是同步的
 集合元素可以是null,但只能放入一個null
當向HashSet結合中存入一個元素時,HashSet會調用該對象的hashCode()方法來得到該對象的hashCode值,然後根據 hashCode值來決定該對象在HashSet中存儲位置。
簡單的說,HashSet集合判斷兩個元素相等的標准是兩個對象通過equals方法比較相等,並且兩個對象的hashCode()方法返回值相 等
注意,如果要把一個對象放入HashSet中,重寫該對象對應類的equals方法,也應該重寫其hashCode()方法。其規則是如果兩個對 象通過equals方法比較返回true時,其hashCode也應該相同。另外,對象中用作equals比較標准的屬性,都應該用來計算 hashCode的值。(HashSet:數據結構式哈希表,線程非同步。保證元素唯一性的原理,判斷hashCode是否相同,如果相同,判斷元素的equals方法。)


TreeSet類有兩種解釋其意思相同
1、TreeSet是SortedSet接口的唯一實現類,TreeSet可以確保集合元素處於排序狀態。TreeSet支持兩種排序方式,自然排序 和定制排序,其中自然排序為默認的排序方式。向TreeSet中加入的應該是同一個類的對象。
TreeSet判斷兩個對象不相等的方式是兩個對象通過equals方法返回false,或者通過CompareTo方法比較沒有返回0
自然排序
自然排序使用要排序元素的CompareTo(Object obj)方法來比較元素之間大小關系,然後將元素按照升序排列。
Java提供了一個Comparable接口,該接口裡定義了一個compareTo(Object obj)方法,該方法返回一個整數值,實現了該接口的對象就可以比較大小。
obj1.compareTo(obj2)方法如果返回0,則說明被比較的兩個對象相等,如果返回一個正數,則表明obj1大於obj2,如果是 負數,則表明obj1小於obj2。
如果我們將兩個對象的equals方法總是返回true,則這兩個對象的compareTo方法返回應該返回0
定制排序
自然排序是根據集合元素的大小,以升序排列,如果要定制排序,應該使用Comparator接口,實現 int compare(T o1,T o2)方法

 


2TreeSet:可以對集合中的元素進行排序,底層數據結構是二叉樹,保證元素唯一性的依據:compareTo方法的return 0.
TreeSet集合的特點:

  兩種排序方式:

    方式一:讓集合中的元素自身具有比較性,這就讓加入到TreeSet集合中的對象必須實現comparable接口重寫compareTo(Object obj)方法

        這種方式也成為元素的自然排序或默認排序。(但是如果排序的元素不是本人寫的,別人寫的沒有實現comparable接口時想排序使用第二種方式)

    方式二:讓集合容器具有比較性,自定義一個比較器實現comparator接口,重寫compare(Object o1,Object o2)方法,在初始化TreeSet容器對象將這個

        自定義的比較器作參數傳給容器的構造函數,使得集合容器具有比較性,使用這種方式的優先級高於方式一,

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved