天天看點

JAVA SE(十五)—— JAVA 集合架構3(Set接口、HashSet類、TreeSet類)一、Set接口二、HashSet類三、TreeSet類

文章目錄

  • 一、Set接口
  • 二、HashSet類
  • 三、TreeSet類

一、Set接口

1、基本概念

Set接口中的資料對象沒有索引,存入的資料無順序,并且元素不可重複。

2、Set主要方法摘要

  • boolean add(E e);

    如果 set 中尚未存在指定的元素,則添加此元素(可選操作)。
  • boolean addAll(Collection<? extends E> c);

    如果 set 中沒有指定 collection 中的所有元素,則将其添加到此 set 中(可選操作)。
  • void clear();

    移除此 set 中的所有元素(可選操作)。
  • boolean contains(Object o);

    如果 set 包含指定的元素,則傳回 true。
  • boolean containsAll(Collection<?> c);

    如果此 set 包含指定 collection 的所有元素,則傳回 true。
  • boolean equals(Object o);

    比較指定對象與此 set 的相等性。
  • int hashCode();

    傳回 set 的哈希碼值。
  • boolean isEmpty();

    如果 set 不包含元素,則傳回 true。
  • Iterator<E> iterator();

    傳回在此 set 中的元素上進行疊代的疊代器。
  • boolean remove(Object o);

    如果 set 中存在指定的元素,則将其移除(可選操作)。
  • boolean removeAll(Collection<?> c);

    移除 set 中那些包含在指定 collection 中的元素(可選操作)。
  • boolean retainAll(Collection<?> c);

    僅保留 set 中那些包含在指定 collection 中的元素(可選操作)。
  • int size();

    傳回 set 中的元素數(其容量)。
  • Object[] toArray();

    傳回一個包含 set 中所有元素的數組。

二、HashSet類

1、基本概念

HashSet底層是哈希,其表存入資料是無序的,而且不能重複,是以列印出來是亂序的。

2、HashSet主要方法摘要

  • boolean add(E e);

    如果此 set 中尚未包含指定元素,則添加指定元素。
  • void clear();

    從此 set 中移除所有元素。
  • Object clone();

    傳回此 HashSet 執行個體的淺表副本:并沒有複制這些元素本身。
  • boolean contains(Object o);

    如果此 set 包含指定元素,則傳回 true。
  • boolean isEmpty();

    如果此 set 不包含任何元素,則傳回 true。
  • Iterator<E> iterator();

    傳回對此 set 中元素進行疊代的疊代器。
  • boolean remove(Object o);

    如果指定元素存在于此 set 中,則将其移除。
  • int size();

    傳回此 set 中的元素的數量(set 的容量)。

3、HashSet的去重機制

(1)去重機制的第一重,首先調用hashCode方法,檢測位址是否一樣;

去重機制的第二重,如果位址是一樣的,則調用equals方法判斷是否是同一個對象或者其子對象, 若果兩個對象是同一對象,則比較值是否一緻。

JAVA SE(十五)—— JAVA 集合架構3(Set接口、HashSet類、TreeSet類)一、Set接口二、HashSet類三、TreeSet類

(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主要方法摘要

  • boolean add(E e);

    将指定的元素添加到此 set(如果該元素尚未存在于 set 中)。
  • boolean addAll(Collection<? extends E> c);

    将指定 collection 中的所有元素添加到此 set 中。
  • E ceiling(E e);

    傳回此 set 中大于等于給定元素的最小元素;如果不存在這樣的元素,則傳回 null。
  • void clear();

    移除此 set 中的所有元素。
  • Object clone();

    傳回 TreeSet 執行個體的淺表副本。
  • Comparator<? super E> comparator();

    傳回對此 set 中的元素進行排序的比較器;如果此 set 使用其元素的自然順序,則傳回 null。
  • boolean contains(Object o);

    如果此 set 包含指定的元素,則傳回 true。
  • Iterator<E> descendingIterator();

    傳回在此 set 元素上按降序進行疊代的疊代器。
  • NavigableSet<E> descendingSet();

    傳回此 set 中所包含元素的逆序視圖。
  • E first();

    傳回此 set 中目前第一個(最低)元素。
  • E floor(E e);

    傳回此 set 中小于等于給定元素的最大元素;如果不存在這樣的元素,則傳回 null。
  • SortedSet<E> headSet(E toElement);

    傳回此 set 的部分視圖,其元素嚴格小于 toElement。
  • E higher(E e);

    傳回此 set 中嚴格大于給定元素的最小元素;如果不存在這樣的元素,則傳回 null。
  • boolean isEmpty();

    如果此 set 不包含任何元素,則傳回 true。
  • Iterator<E> iterator();

    傳回在此 set 中的元素上按升序進行疊代的疊代器。
  • E last();

    傳回此 set 中目前最後一個(最高)元素。
  • E lower(E e);

    傳回此 set 中嚴格小于給定元素的最大元素;如果不存在這樣的元素,則傳回 null。
  • E pollFirst();

    擷取并移除第一個(最低)元素;如果此 set 為空,則傳回 null。
  • E pollLast();

    擷取并移除最後一個(最高)元素;如果此 set 為空,則傳回 null。
  • boolean remove(Object o);

    将指定的元素從 set 中移除(如果該元素存在于此 set 中)。
  • int size();

    傳回 set 中的元素數(set 的容量)。