set和hashset區別及用法

【Set和HashSet】

1、Set

​ 概念:Set集合類似於一個瓶罐子,集合中的多個對象之間沒有明顯的順序排列。

​ 特點如下:

  • ​ set集合不允許包含相同的元素,如果試圖要把兩個相同的元素加入到同一個Set集合中,則將添加失敗;add方法返回false,且新元素不會被加入。【無序容器】

  • ​ 使用equals方法判斷兩個對象是否相同,不使用==運算符

  • ​ 最多包含一個Null元素

​ 常用:

​ 最常用的實現類有HashSet、LinkedHashSet和TreeSet;

​ TreeSet是一個有序的集合容器,它實現了SortedSet接口,根據compare()方法和compareTo()方法進行排序

2、HashSet:

​ 概念:HashSet顧名思義是通過hash算法存儲集合元素的,依賴數據結構是哈希表,因而它具有良好存取和查找功能;HashSet是Set接口的實現類,多數情況下使用Set集合都是通過HashSet來實現的。

​ 特點如下:

  • ​ HashSet 集合中存儲的元素(對象)是無序排列的,插入的元素(對象)是根據的是hashcode

  • ​ HashSet是線程不安全的(非同步的)

  • ​ HashSet允許爲null,但仍不允許有重複的值

  • ​ HashSet實現了Serializable和cloneable兩接口


3、一段插曲:

這裏再來回顧以下Serializable接口:

​ Serializable接口,是一個對象序列化接口,一個Java類只有通過實現Serializable接口了它的對象纔可以被序列化

什麼是序列化呢??(emm這知識怎麼學了總忘啊) 下面咱們再來回顧以下吧…

​ 序列化就是將對象的狀態信息轉換爲可以存儲或者傳輸的形式的過程(也可以說是把對象轉換爲字節序列的過程),比方說,把對象通過網絡進行傳輸、將對象的狀態信息持久化

通俗講,在代碼運行時,我們可看到有很多的對象,這些對象可以是一個、也可以是一類對象的集合,在這些對象數據中我們需要把一部分信息給保存下來,這時,有了序列化就可以把內存裏的這些對象轉換爲一串串字節描述這個過程。(常見就是變成了文件

序列化能幹嘛??(請往下看😁)

​ 1、在你想要把內存中的對象狀態保存到一個文件中/數據庫時 要用它

​ 2、在你要把套接字在網絡上傳送對象時 要用它

​ 3、在你要用RMI傳輸對象時 要用它(RMI是遠程方法調用,能夠讓在某個java虛擬機上的對象像調用本地對象一樣調用另一個java 虛擬機中的對象上的方法)

怎麼像是跑偏了、你確定標題不是Set集合麼??

img

(這裏描述可能還不夠清楚,若大佬有通俗的見解,歡迎多多指正,在下不勝感激!)

img


最後格言: 絆腳石乃是進身之階

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