1. 程式人生 > >集合框架之Set學習

集合框架之Set學習

聲明 test ole 三種 通過 實現 順序 pos col

前言:

1、何為框架:可以理解為一個基礎結構,在基礎結構上進行進一步開發會變得很方便。

2、三種集合類型:集合(Set) :元素無序不可重復; 列表(List) :元素有序可重復; 映射(Map) :鍵不可以重復,值可以重復

Set是實現Collection接口的一個子接口。其常用的實現類有HashSet、LinkedHashSet、TreeSet等。下面將從“set和hashSet的一些用法、set和LinkedHashSet的一些用法”來進行學習總結。

HashSet常用方法的總結:   
public static void BestTest() {
// set和hashSet的一些用法
//HashSet<String> hashSet = new HashSet<String>();
//hashSet向上轉型為Set類型,上面聲明Set的方法不建議使用
Set<String> set = hashSet;
Set<String> set = new HashSet<String>();
boolean b1 = set.isEmpty();
System.out.println(b1);

set.add("a");
set.add("b");
set.add("c");
set.add("d");
set.add("c"); //重復元素會忽略掉

boolean b2 = set.isEmpty();
System.out.println(b2);

int i = set.size();
System.out.println("clear之前總的元素為:"+i);
set.remove("a");

set.clear();
int j = set.size();
System.out.println("clear之後總的元素為:"+j);
}

為什麽使用Iterator遍歷Set集

public static void setTest() {
        Set<String> set = new HashSet<String>();
set.add("a");
set.add("b");
set.add("c");
set.add("d");
set.add("c"); //重復元素會忽略掉


// 調用Set對象的iterator(),會生成一個叠代器對象,該對象用於遍歷set
Iterator<String> it = set.iterator(); // 這裏進行泛型設置
// while用於不定次數的循環
while (it.hasNext()) {
System.out.println(it.next()); //取出元素並將遊標向後移動1位
}
}
總結:
因為set是無序的,不能通過下標取,只能通過叠代器Iterator取。
hasNext():有沒有下一個元素。next():返回遊標所指元素的元素(將其取出),並將遊標向後挪一位。

繼承關系:Iterator <-- Collection <-- Set(List) <-- HashSet

LinkedHashSet
LinkedHashSet:使用鏈表維護了一個添加進集合的順序。導致我們“遍歷”該集合元素時,是按照添加進去的順序遍歷的(這個並不能說明是有順序的,因為set本身就是“無序且不可重復的”) 。

LinkedHashSet插入性能略低於HashSet。linkedHashSet的叠代訪問
性能高於HashSet
 
public static void testLinkedHashSet() {
Set set = new LinkedHashSet();
set.add(123);
set.add(456);
set.add("A");
set.add(null);

Iterator iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}

集合框架之Set學習