JAVA語言之Set
一、Set和List的區別
List中可以存在相同的元素,而Set不可以。基於這個特性,Set可以被用來實現去重,可作為Map的鍵
二、常見的Set
常見的Set有HashSet、LinkedHashSet、TreeSet
這些具體的實現類都繼承了Set介面,實現了插入、刪除、求長度、判斷是否為空等方法
System.out.println(set.add(new grade("zhangsan",85,88)));
System.out.println(set.add(new grade("zhangsan",85,88)));
輸出
true
false
當試圖插入相同元素時,第二次插入是無效的
下面給出這三種具體實現類的區別
HastSet
不能保證元素的排列順序,順序有可能發生變化
集合元素可以是null,但只能放入一個null
當向HashSet結合中存入一個元素時,HashSet會呼叫該物件的hashCode()方法來得到該物件的hashCode值,然後根據 hashCode值來決定該物件在HashSet中儲存位置。
也就是說,HashSet的位置是由HashCode決定的
LinkedHashSet
和HashSet的區別在於,LinkedHashSet的元素是按照插入的順序輸出的
public static void main(String[] args) {
LinkedHashSet set = new LinkedHashSet();
ConstructSet(set);
HashSet hashSet = new HashSet();
ConstructSet(hashSet);
}
public static void ConstructSet(Set set){
set.add(new grade("zhangsan",85,88));
set.add(new grade("lisi",80,87));
set.add(new grade("wangwu",70,98));
set.add(new grade("zhaoliu",65,100));
Iterator it = set.iterator();
while (it.hasNext()){
System.out.println(it.next().toString());
}
}
輸出:
name = zhangsan age = 85 math = 88
name = lisi age = 80 math = 87
name = wangwu age = 70 math = 98
name = zhaoliu age = 65 math = 100
name = wangwu age = 70 math = 98
name = zhangsan age = 85 math = 88
name = zhaoliu age = 65 math = 100
name = lisi age = 80 math = 87
TreeSet
和HashSet不同,TreeSet可以開發人員指定排序方式
相關文章
- Java語言之物件導向—類與物件(上)Java物件
- 四種Java指令碼語言之評測(轉)Java指令碼
- Go語言之methodGo
- Go語言之介面Go
- C語言之家C語言
- 好程式設計師Java分享SQL語言之索引程式設計師JavaSQL索引
- Go語言之ContextGoContext
- Go語言之 Struct TagGoStruct
- go語言之反射-------ReflectionGo反射
- 好程式設計師Java教程:SQL語言之檢視程式設計師JavaSQL
- 學java語言之前學什麼利於學習?Java
- Java之父評價C語言之父:C語言撐起了一切JavaC語言
- 深度解密 Go 語言之 channel解密Go
- 深度解密Go語言之 map解密Go
- 深度解密Go語言之Slice解密Go
- 深度解密Go語言之channel解密Go
- C語言之基本概念C語言
- 深度解密GO語言之反射解密Go反射
- Go語言之讀寫鎖Go
- C語言之氣泡排序C語言排序
- C語言之結構體C語言結構體
- C語言之詭異字串C語言字串
- 七週七語言之Ruby
- Go語言之包(package)管理GoPackage
- 深度解密Go語言之context解密GoContext
- 深度解密 Go 語言之 context解密GoContext
- go語言之陣列與切片Go陣列
- Go語言之併發示例(Runner)Go
- Golang與Python:語言之戰GolangPython
- Go語言之旅:基本型別Go型別
- C語言之環形佇列C語言佇列
- Go語言之錯誤處理Go
- C語言之字串與指標C語言字串指標
- C語言之static關鍵字C語言
- C語言之輸入輸出C語言
- 深度解密 Go 語言之 sync.Pool解密Go
- 深度解密 Go 語言之 sync.map解密Go
- go語言之結構體和方法Go結構體