Set類繼承了Conllection類,是一種集合類。Set的實現類有三個,下面我們會一一來說這些的不一樣。
HashSet
HashSet類按照哈希算法來存取集合中的對象,存取速度比較快。
1.Set中是不能出現重複數據的。
2.Set中可以出現空數據。
3.Set中的數據是無序的。
詳細見demo:
Set<String> set = new HashSet<String>();
for(int i= 0;i<6;i++){
set.add(i+"");
}
set.add("3"); //重複數據,不會寫入
set.add(null); //可以寫入空數據
Iterator<String> iter = set.iterator();
while(iter.hasNext()){
System.out.println(iter.next()); //輸出是無序的
}
這段執行之後的打印輸出是:
null
3
2
1
0
5
4
LinkedHashSet
這個相對於HashSet來說有一個很大的不一樣是LinkedHashSet是有序的。LinkedHashSet在迭代訪問Set中的全部元素時,性能比HashSet好,但是插入時性能稍微遜色於HashSet。
詳細見demo:
Set<String> set = new LinkedHashSet<String>();
for(int i= 0;i<6;i++){
set.add(i+"");
}
set.add("3"); //重複數據,不會寫入
set.add(null); //可以寫入空數據
Iterator<String> iter = set.iterator();
while(iter.hasNext()){
System.out.println(iter.next()); //輸出是有序的
}
輸出打印如下:
0
1
2
3
4
5
null
TreeSet
TreeSet的特點是:
1.不能寫入空數據
2.寫入的數據是有序的。
3.不寫入重複數據
詳細見demo:
Set<String> set = new TreeSet<String>();
for(int i= 0;i<6;i++){
set.add(i+"");
}
set.add("3"); //重複數據,不會寫入
//set.add(null); //不可以寫入空數據
Iterator<String> iter = set.iterator();
while(iter.hasNext()){
System.out.println(iter.next()); //輸出是有序的
}
輸出打印爲:
0
1
2
3
4
5