Java中的Set集合类
1. 概述 ??
??????? Java 中的Set和正好和數學上直觀的集(set)的概念是相同的。Set最大的特性就是不允許在其中存放的元素是重復的。根據這個特點,我們就可以使用Set 這個接口來實現前面提到的關于商品種類的存儲需求。Set 可以被用來過濾在其他集合中存放的元素,從而得到一個沒有包含重復新的集合。
?
2. 常用方法
??????? 按照定義,Set 接口繼承 Collection 接口,而且它不允許集合中存在重復項。所有原始方法都是現成的,沒有引入新方法。具體的 Set 實現類依賴添加的對象的 equals() 方法來檢查等同性。
??????? 各個方法的作用描述:
??????? public int size() :返回set中元素的數目,如果set包含的元素數大于Integer.MAX_VALUE,返回Integer.MAX_VALUE;
??????? public boolean isEmpty() :如果set中不含元素,返回true ;
??????? public boolean contains(Object o) :如果set包含指定元素,返回true ;
??????? public Iterator iterator() : 返回set中元素的迭代器,元素返回沒有特定的順序,除非set提高該保證的某些類的實例 ;
??????? public boolean add(Object o) :如果set中不存在指定元素,則向set加入 ;
??????? public boolean remove(Object o) :如果set中存在指定元素,則從set中刪除 ;
??????? public boolean removeAll(Collection c) :如果set包含指定集合,則從set中刪除指定集合的所有元素 ;
??????? public void clear() :從set中刪除所有元素;
?
3. 原理分析
??????? HashSet的元素存放順序和添加進去時候的順序沒有任何關系;而LinkedHashSet 則保持元素的添加順序;TreeSet則是對我們的Set中的元素進行排序存放。?
??????? 一般來說,當要從集合中以有序的方式抽取元素時,TreeSet 實現就會有用處。為了能順利進行,添加到 TreeSet 的元素必須是可排序的。 而同樣需要對添加到TreeSet中的類對象實現 Comparable 接口的支持。對于Comparable接口的實現。假定一棵樹知道如何保持 java.lang 包裝程序器類元素的有序狀態。一般說來,先把元素添加到 HashSet,再把集合轉換為 TreeSet 來進行有序遍歷會更快。這點和HashMap的使用非常的類似。?
??????? 其實Set的實現原理是基于Map上面的。Set中很多實現類和Map中的一些實現類的使用上非常的相似。Map中的“鍵值對”,其中的 “鍵”是不能重復的。這個和Set中的元素不能重復一致,其實Set利用的就是Map中“鍵”不能重復的特性來實現的。 HashSet的巧妙實現:就是建立一個“鍵值對”,“鍵”就是我們要存入的對象,“值”則是一個常量。這樣可以確保, 我們所需要的存儲的信息之是“鍵”。而“鍵”在Map中是不能重復的,這就保證了我們存入Set中的所有的元素都不重復。而判斷是否添加元素成功,則是通 過判斷我們向Map中存入的“鍵值對”是否已經存在,如果存在的話,那么返回值肯定是常量:PRESENT ,表示添加失敗。如果不存在,返回值就為null 表示添加成功。
總結
以上是生活随笔為你收集整理的Java中的Set集合类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cubieboard ARM 集群
- 下一篇: Java中的Set操作