文章目錄
- 一、Set接口
- 二、HashSet類
- 三、TreeSet類
一、Set接口
1、基本概念
Set接口中的資料對象沒有索引,存入的資料無順序,并且元素不可重複。
2、Set主要方法摘要
-
如果 set 中尚未存在指定的元素,則添加此元素(可選操作)。boolean add(E e);
-
如果 set 中沒有指定 collection 中的所有元素,則将其添加到此 set 中(可選操作)。boolean addAll(Collection<? extends E> c);
-
移除此 set 中的所有元素(可選操作)。void clear();
-
如果 set 包含指定的元素,則傳回 true。boolean contains(Object o);
-
如果此 set 包含指定 collection 的所有元素,則傳回 true。boolean containsAll(Collection<?> c);
-
比較指定對象與此 set 的相等性。boolean equals(Object o);
-
傳回 set 的哈希碼值。int hashCode();
-
如果 set 不包含元素,則傳回 true。boolean isEmpty();
-
傳回在此 set 中的元素上進行疊代的疊代器。Iterator<E> iterator();
-
如果 set 中存在指定的元素,則将其移除(可選操作)。boolean remove(Object o);
-
移除 set 中那些包含在指定 collection 中的元素(可選操作)。boolean removeAll(Collection<?> c);
-
僅保留 set 中那些包含在指定 collection 中的元素(可選操作)。boolean retainAll(Collection<?> c);
-
傳回 set 中的元素數(其容量)。int size();
-
傳回一個包含 set 中所有元素的數組。Object[] toArray();
二、HashSet類
1、基本概念
HashSet底層是哈希,其表存入資料是無序的,而且不能重複,是以列印出來是亂序的。
2、HashSet主要方法摘要
-
如果此 set 中尚未包含指定元素,則添加指定元素。boolean add(E e);
-
從此 set 中移除所有元素。void clear();
-
傳回此 HashSet 執行個體的淺表副本:并沒有複制這些元素本身。Object clone();
-
如果此 set 包含指定元素,則傳回 true。boolean contains(Object o);
-
如果此 set 不包含任何元素,則傳回 true。boolean isEmpty();
-
傳回對此 set 中元素進行疊代的疊代器。Iterator<E> iterator();
-
如果指定元素存在于此 set 中,則将其移除。boolean remove(Object o);
-
傳回此 set 中的元素的數量(set 的容量)。int size();
3、HashSet的去重機制
(1)去重機制的第一重,首先調用hashCode方法,檢測位址是否一樣;
去重機制的第二重,如果位址是一樣的,則調用equals方法判斷是否是同一個對象或者其子對象, 若果兩個對象是同一對象,則比較值是否一緻。
(2)Demo:用HashSet模拟生成雙色球号碼
public class Demo{
public static void main(String[] args) {
HashSet<Integer> hs = new HashSet<Integer>();
//六個紅球的号碼
while(hs.size() <= 6) {
hs.add((int)(Math.random() * 33 + 1));
}
//一個藍球的号碼
hs.add((int)(Math.random() * 16 + 1));
System.out.println("雙色球号碼為:" + hs + " ");
}
}
三、TreeSet類
1、基本概念
底層存儲結構為樹(二叉樹、複雜樹)。
2、TreeSet主要方法摘要
-
将指定的元素添加到此 set(如果該元素尚未存在于 set 中)。boolean add(E e);
-
将指定 collection 中的所有元素添加到此 set 中。boolean addAll(Collection<? extends E> c);
-
傳回此 set 中大于等于給定元素的最小元素;如果不存在這樣的元素,則傳回 null。E ceiling(E e);
-
移除此 set 中的所有元素。void clear();
-
傳回 TreeSet 執行個體的淺表副本。Object clone();
-
傳回對此 set 中的元素進行排序的比較器;如果此 set 使用其元素的自然順序,則傳回 null。Comparator<? super E> comparator();
-
如果此 set 包含指定的元素,則傳回 true。boolean contains(Object o);
-
傳回在此 set 元素上按降序進行疊代的疊代器。Iterator<E> descendingIterator();
-
傳回此 set 中所包含元素的逆序視圖。NavigableSet<E> descendingSet();
-
傳回此 set 中目前第一個(最低)元素。E first();
-
傳回此 set 中小于等于給定元素的最大元素;如果不存在這樣的元素,則傳回 null。E floor(E e);
-
傳回此 set 的部分視圖,其元素嚴格小于 toElement。SortedSet<E> headSet(E toElement);
-
傳回此 set 中嚴格大于給定元素的最小元素;如果不存在這樣的元素,則傳回 null。E higher(E e);
-
如果此 set 不包含任何元素,則傳回 true。boolean isEmpty();
-
傳回在此 set 中的元素上按升序進行疊代的疊代器。Iterator<E> iterator();
-
傳回此 set 中目前最後一個(最高)元素。E last();
-
傳回此 set 中嚴格小于給定元素的最大元素;如果不存在這樣的元素,則傳回 null。E lower(E e);
-
擷取并移除第一個(最低)元素;如果此 set 為空,則傳回 null。E pollFirst();
-
擷取并移除最後一個(最高)元素;如果此 set 為空,則傳回 null。E pollLast();
-
将指定的元素從 set 中移除(如果該元素存在于此 set 中)。boolean remove(Object o);
-
傳回 set 中的元素數(set 的容量)。int size();