導航:首頁 > 編程語言 > java實現set

java實現set

發布時間:2023-02-07 06:46:34

java裡面的集合框架的set用法應該怎麼做

1、Set:它是無序、不重復、該介面中的方法和Collection介面中的方法一致。

繼承它的子類有HashSet和TreeSet。

根據元素的兩個方法來完成的,一個是HashCode、一個是equals方法,只有當hashCode方法算出哈希值相同時,會再次判斷兩個元素的equals方法是否為true,如果是true說明兩個元素相同,不存儲,所以往hashSet集合中存儲自定義對象時,要覆蓋hashCode,equals方法,通過自定義對象具備的特有數據定義hashCode、equals的具體實現。

它保證元素的唯一性,就是通過元素對象的比較方法返回值來確定的,如果為0,則視為兩個元素時相同的元素,不存儲。

treeset的兩種排序方式:

1、讓元素自身具備比較功能,就是強制讓元素類去實現comparable介面,覆蓋compareTo方法,這時元素具備的自然排序,可是如果元素自身不具備比較功能,獲取具備的比較功能不是所需要的,這時排序方式就不能用了。

2、讓集合自身具備比較功能,需要定義比較器,其實就實現了comparetor介面的子類對象作為參數傳遞給treeSet集合的構造函數,讓treeSet集合一創建就具備了比較功能,該子類必須要覆蓋compare方法。

❷ Java中set的簡單用法

Set的最大特點是能去掉重復的元素並獲取相應數據 下面看個簡單的代碼 先使用QBC查詢出所有員工 在過濾掉重復的員工所在部門 最後得到所有員工的部門串

lishixin/Article/program/Java/JSP/201311/19387

❸ JAVA 連續.set()方法是怎麼實現的

你這是不是進入了誤區了?? get set 是javaBean 中方法,一般get有返回值,set是void,
只有設置setName等等,方法返回值不能為空,return CatClass對象才能實現

❹ java中的set和map的內部實現細節是什麼(就像ArrayList是Object數組,LinkedList是鏈表),越詳細越好。

一個不包含重復元素的 collection。更確切地講,set 不包含滿足 e1.equals(e2) 的元素對 e1 和 e2,並且最多包含一個 null 元素。正如其名稱所暗示的,此介面模仿了數學上的 set 抽象。

在所有構造方法以及 add、equals 和 hashCode 方法的協定上,Set 介面還加入了其他規定,這些規定超出了從 Collection 介面所繼承的內容。出於方便考慮,它還包括了其他繼承方法的聲明(這些聲明的規范已經專門針對 Set 介面進行了修改,但是沒有包含任何其他的規定)。

對這些構造方法的其他規定是(不要奇怪),所有構造方法必須創建一個不包含重復元素的 set(正如上面所定義的)。

註:如果將可變對象用作 set 元素,那麼必須極其小心。如果對象是 set 中某個元素,以一種影響 equals 比較的方式改變對象的值,那麼 set 的行為就是不確定的。此項禁止的一個特殊情況是不允許某個 set 包含其自身作為元素。

某些 set 實現對其所包含的元素有所限制。例如,某些實現禁止 null 元素,而某些則對其元素的類型所有限制。試圖添加不合格的元素會拋出未經檢查的異常,通常是 NullPointerException 或 ClassCastException。試圖查詢不合格的元素是否存在可能會拋出異常,也可能簡單地返回 false;某些實現會採用前一種行為,而某些則採用後者。概括地說,試圖對不合格元素執行操作時,如果完成該操作後不會導致在 set 中插入不合格的元素,則該操作可能拋出一個異常,也可能成功,這取決於實現的選擇。此介面的規范中將這樣的異常標記為「可選」。
public interface Map<K,V>將鍵映射到值的對象。一個映射不能包含重復的鍵;每個鍵最多隻能映射到一個值。

此介面取代 Dictionary 類,後者完全是一個抽象類,而不是一個介面。

Map 介面提供三種collection 視圖,允許以鍵集、值集或鍵-值映射關系集的形式查看某個映射的內容。映射順序 定義為迭代器在映射的 collection 視圖上返回其元素的順序。某些映射實現可明確保證其順序,如 TreeMap 類;另一些映射實現則不保證順序,如 HashMap 類。

註:將可變對象用作映射鍵時必須格外小心。當對象是映射中某個鍵時,如果以影響 equals 比較的方式更改了對象的值,則映射的行為將是不確定的。此項禁止的一種特殊情況是不允許某個映射將自身作為一個鍵包含。雖然允許某個映射將自身作為值包含,但請格外小心:在這樣的映射上 equals 和 hashCode 方法的定義將不再是明確的。

所有通用的映射實現類應該提供兩個「標準的」構造方法:一個 void(無參數)構造方法,用於創建空映射;一個是帶有單個 Map 類型參數的構造方法,用於創建一個與其參數具有相同鍵-值映射關系的新映射。實際上,後一個構造方法允許用戶復制任意映射,生成所需類的一個等價映射。盡管無法強制執行此建議(因為介面不能包含構造方法),但是 JDK 中所有通用的映射實現都遵從它。

此介面中包含的「破壞」方法可修改其操作的映射,如果此映射不支持該操作,這些方法將拋出 UnsupportedOperationException。如果是這樣,那麼在調用對映射無效時,這些方法可以(但不要求)拋出 UnsupportedOperationException。例如,如果某個不可修改的映射(其映射關系是「重疊」的)為空,則對該映射調用 putAll(Map) 方法時,可以(但不要求)拋出異常。

某些映射實現對可能包含的鍵和值有所限制。例如,某些實現禁止 null 鍵和值,另一些則對其鍵的類型有限制。嘗試插入不合格的鍵或值將拋出一個未經檢查的異常,通常是 NullPointerException 或 ClassCastException。試圖查詢是否存在不合格的鍵或值可能拋出異常,或者返回 false;某些實現將表現出前一種行為,而另一些則表現後一種。一般來說,試圖對不合格的鍵或值執行操作且該操作的完成不會導致不合格的元素被插入映射中時,將可能拋出一個異常,也可能操作成功,這取決於實現本身。這樣的異常在此介面的規范中標記為「可選」。

此介面是 Java Collections Framework 的成員。

Collections Framework 介面中的很多方法是根據 equals 方法定義的。例如,containsKey(Object key) 方法的規范中寫道:「當且僅當此映射包含針對滿足 (key==null ? k==null : key.equals(k)) 的鍵 k 的映射關系時,返回 true」。不 應將此規范解釋為:調用具有非空參數 key 的 Map.containsKey 將導致對任意的鍵 k 調用 key.equals(k)。實現可隨意進行優化,以避免調用 equals,例如,可首先比較兩個鍵的哈希碼(Object.hashCode() 規范保證哈希碼不相等的兩個對象不會相等)。一般來說,只要實現者認為合適,各種 Collections Framework 介面的實現可隨意利用底層 Object 方法的指定行為。

❺ java 怎麼給set賦值

1、定義一個Set的對象
Set set=new HashSet();//new 一個hashset2、往set中添加字元串數據數據
set.add("內容");//往set里添加一個字元串"內容"Set是最簡單的一種集合,沒有重復對象。Set介面主要實現了兩個實現類:
HashSet
:
HashSet類按照哈希演算法來存取集合中的對象,存取速度比較快
TreeSet
:
TreeSet類實現了SortedSet介面,能夠對集合中的對象進行排序。

❻ java中set排序怎麼實現

你好,java中專門的帶有順序的set類是TreeSet,比如對String類的TreeSet使用方法是

TreeSet<String> set=new TreeSet<String>(new Comparator(){
@Override
public int compare(Object arg0, Object arg1) {
return 0;
}
});

❼ java中怎麼實現set類里的數據隨機數據

可以使用LinkedHashSet
LinkedHashSet
LinkedHashSet集合同樣是根據元素的hashCode值來決定元素的存儲位置,但是它同時使用鏈表維護元素的次序。這樣使得元素看起 來像是以插入順序保存的,也就是說,當遍歷該集合時候,LinkedHashSet將會以元素的添加順序訪問集合的元素。
LinkedHashSet在迭代訪問Set中的全部元素時,性能比HashSet好,但是插入時性能稍微遜色於HashSet。

❽ java中怎麼往集合類set里添加數據

java中往集合添加數據調用add();方法就行

//第一步先創建一個set集合的子類

HashSet has=new HashSet<>();

//給set集合添加的方法是add();

has.add(args);

資料拓展:

Collection介面可以存放重復元素,也可以存放不重復元素。List可以存放重復元素,Set就是不重復的元素。
通過元素的equals方法,來判斷是否為重復元素。
Set集合取出元素的方式可以採用:迭代器,增強 for

❾ 怎樣從java集合類set中取出數據

創建set的iterator方法:

Set<Object> set = new HashSet<Object>();

Iterator<Object> it = set.iterator();

while(it.hasNext())//判斷是否有下一個

it.next()取出元素。

以上方法便是從Set集合中取出數據。

(9)java實現set擴展閱讀:

Java中使用Set介面描述一個集合(集合不允許有「重復值」,注意重復的概念),集合Set是Collection的子介面,Set不允許其數據元素重復出現,也就是說在Set中每一個數據元素都是唯一的。Set介面定義的常用方法如下:

1、size() 獲取Set尺寸(即Set包含數據元素的總數)。

2、 add(Object obj) 向Set中添加數據元素obj。

3、remove(Object obj) 從Set中移除數據元素obj。

4 、contains(Object obj) 判斷當前Set中是否包含數據元素obj,如果包含返回true,否則返回false。

5、iterator() 將Set裝入迭代器。

❿ java 集合set類中是如何實現數據不能重復的

Set 有個 add 方法是將元素添加到 Set 中,以 HashSet 為例。

publicbooleanadd(Ee){
returnmap.put(e,PRESENT)==null;
}

可以看到,HashSet 底層的數據結構是一個HashMap<E,Object> ,將 e 作為 HashMap 的 key 保存的。而 HashMap 的底層數據結構是 HashTable ,根據 HashMap 的 key 的HashCode 去 HashTable (具體實現是數組+鏈表) 里找到元素的位置。如果同一個對象(使用equals 來比較兩個對象是否相同,具體是比較對象的 hashCode() 是否相同) 往Set 里放,最終放到 HashTable 的位置是相同的。具體判斷Set 是否包含某個對象,調用的是Set的contains(Object o) 方法,它內部也是通過計算 o 的hashCode 去查找該元素是否存在的。

如果題主是新學習Java的同學,建議重點學習一下常用集合的數據結構,對於掌握Java這門語言非常有幫助。

閱讀全文

與java實現set相關的資料

熱點內容
怎麼給電腦app分身 瀏覽:820
資治通鑒pdf中華書局 瀏覽:186
穿越民國種馬 瀏覽:628
新搬來的新居電影 瀏覽:561
有個小說主角叫姜 瀏覽:602
重生德國一戰的小說 瀏覽:249
給點能看的網站 瀏覽:670
77電影網 瀏覽:68
在線可以觀看的網站 瀏覽:827
電梯日本電影 瀏覽:73
有部電影裡面有兩個人一個拿白色光劍 瀏覽:63
程序員如何自行車通勤 瀏覽:213
打開文件夾一直彈出新的窗口win10 瀏覽:475
外出2015孫藝珍完整板 瀏覽:409
男主角叫奧斯丁的電影 瀏覽:901
linux殺進程命令 瀏覽:597
主角叫秦天系統小說 瀏覽:703
韓國倫理游泳池 瀏覽:6
電影殺手為小男孩改名叫林默 瀏覽:373
現代道士電影 瀏覽:263