JAVA容器(三) Set類

2021-06-21 14:39:41 字數 1346 閱讀 9935

set與list都實現了collections介面,但他們區別是list中可以有重複物件出現,但是set裡面不能有重複物件。set裡面最常用的是hashset,而treeset只有在排序的時候一般採用到。

1.先說說set裡面常用的方法

public boolean isempty() :如果set中不含元素,返回true 

public boolean contains(object o) :如果set包含指定元素,返回true 

public iterator iterator() 返回set中元素的迭代器元素返回沒有特定的順序,

public boolean containsall(collection c) :如果set包含指定集合的所有元素,返回true。如果指定集合也是乙個set,只有是當前set的子集時,方法返回true 

public boolean addall(collection c) :如果set中中不存在指定集合的元素,則向set中加入所有元素 

public boolean retainall(collection c) :只保留set中所含的指定集合的元素(可選操作)。換言之,從set中刪除所有指定集合不包含的元素。 如果指定集合也是乙個set,那麼該操作修改set的效果是使它的值為兩個set的交集 

public boolean removeall(collection c) :如果set包含指定集合,則從set中刪除指定集合的所有元素 

2.談談hashset和treeset

hashset(雜湊表):在hashset中沒有get()方法,但可以通過iterator()來實現。要注意的是假如要在hasset中存放一些物件,那麼你得重定義hashcode()與equals()二個方法來保不可以存放相同的內容的元素。對於hashcode()所返回的值,hashset用它來計算(通過特定的函式)該物件在記憶體中的存放位置;後者主要用來判斷二個物件的內容是否相等而返回對應的boolen型。

treeset,主要用來對元素進行排序操作,假如要往其中新增物件,則物件得實現

comparable介面。(假如不要對元素排序,則一般可選用hashset)。

3.hashset和treeset比較

且看以下例項:

public class setofinteger

}如果把紅線處**換成

set intset=new treeset();可以看到,使用hashset來儲存元素然後輸出,元素是沒有順序的;而用treeset來儲存物件元素然後輸出,元素是按照從小到大的順序輸出的。從這裡可以看到他們的差別。

set中最主要的類是hashset,後面將對hashset詳細解析。

set容器 map容器

簡介 本質 set和multiset區別 構造 賦值 include void printset set int s cout endl 構造和賦值 void test01 intmain 總結 函式原型 include void printset set int s cout endl 大小 vo...

Java 抽象容器類

抽象容器類與集合和具體容器類之間的對應關係如圖所示 其中虛線表示介面,包含collection,list,set,queue,deque和map。同時包含六個抽象容器類。abstractcollection 實現了collection介面,被抽象類abstractlist abstractset a...

java集合彙總(三) Set

public inte ce setextends collection 不包含重複元素的集合。繼承方法請看 collection boolean add e e 如果指定的元素不存在,則將其指定的元素新增。boolean addall collection c 將指定集合中的所有元素新增到此集合 ...