1. 程式人生 > >java Set(集合)

java Set(集合)

set不儲存重複的元素(至於如何判斷元素相同則較為複雜,後面將會看到).Set中最常被使用的是測試歸屬表,你可以很容易地詢問某個物件是否在某個Set中,正因如此,查詢就成了Set最重要的操作,因此通常會選擇一個HashSet的實現,它專門對快速查詢進行了優化.

set具有與Collection完全一樣的介面,因此沒有額外的功能,實際上set就是Collection,只是行為不同.(這是繼承與多型思想的典型應用:表現不同的行為.)Set是基於物件的值來確定歸屬性的,

//一個HashSet的示例
//
: holding/SetOfInteger.java package object; import
java.util.*; public class SetOfInteger { public static void main(String[] args) { Random rand = new Random(new Date().getTime()); Set<Integer> intset = new HashSet<Integer>(); for(int i = 0; i < 10000; i++) intset.add(rand.nextInt(30)); System.out.println(intset);//0~29之間的數出現了10000次但每一個數只有一個出現在結果中 } }
/* Output: [15, 8, 23, 16, 7, 22, 9, 21, 6, 1, 29, 14, 24, 4, 19, 26, 11, 18, 3, 12, 27, 17, 2, 13, 28, 20, 25, 10, 5, 0] *///:~

由於出於速度的原因HashSet使用了雜湊.HashSet的維護與TreeSet或LinkedSet都不同,因為它們的實現具有不同的元素儲存方式,TreeSet將元素儲存在紅--黑樹資料結構中,而HashSet使用了雜湊函式,LinkedSet出於速度原因也使用了雜湊,但看起來它使用了連結串列來維護元素的插入順序

用HashSet一般沒有規律可循,如果相對結果排序可以使用TreeSet